在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。
1、Create Sequence
首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。
创建语句如下:
CREATE SEQUENCE seqTest
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
2、得到Sequence值
定义好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的当前值
NextVal:增加sequence的值,然后返回 增加后sequence值
得到值语句如下:
SELECT Sequence名称.CurrVal FROM DUAL;
如得到上边创建Sequence值的语句为:
select seqtest.currval from dual
在Sql语句中可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- INSERT语句的values中
- UPDATE 的 SET中
如在插入语句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');
注:
- 第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。
CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。
一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。
- 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组 到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。
3、Alter Sequence
拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。
拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。
例:
alter sequence SEQTEST maxvalue 9999999;
另: SEQUENCE_CACHE_ENTRIES参数,设置能同时被cache的sequence数目。
4、Drop Sequence
DROP SEQUENCE seqTest;
相关推荐
然后,我们使用一个PL/SQL块来遍历所有需要重置的Sequence,并根据表中的最大主键值来设置Sequence的起始值。 #### 1. 定义函数`func_getseq` ```sql CREATE OR REPLACE FUNCTION func_getseq (in_table VARCHAR2)...
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
以下是对Oracle Sequence用法的详细解析: 1. **创建Sequence** 创建Sequence需要`CREATE SEQUENCE`权限。基本语法如下: ```sql CREATE SEQUENCE sequence_name INCREMENT BY increment_value --每次增加的...
为了在 Oracle 中使用 Sequence,首先需要确保拥有相应的权限,通常是 `CREATE SEQUENCE` 或者 `CREATE ANY SEQUENCE` 权限。创建 Sequence 的基本语法如下: ```sql CREATE SEQUENCE sequence_name INCREMENT BY ...
总的来说,使CoolSQL支持Oracle Sequence的GeneratedKey需要对数据库操作流程有深入理解,无论是通过扩展工具源码、配置、使用JDBC API还是借助ORM框架,都需要结合具体项目需求和CoolSQL的功能来选择合适的方法。...
一、为表创建自增长自段有两种,一种是不同的表使用各自的Sequence,方法如下: 1、在Oracle sequence首先创建sequence create sequence seq_idminvalue 1start with 1increment by 1cache 20; 2、在你的hbm....
在Oracle数据库中,由于不支持自动递增的主键策略,开发者通常会使用Sequence来生成主键值。本文将深入探讨如何在MyBatis-Plus...理解并熟练掌握这一配置方法,对于在Oracle环境下使用MyBatis-Plus进行开发至关重要。
在Oracle数据库中,序列(SEQUENCE)是一种特殊的数据类型,用于生成唯一且递增的整数值,常用于主键生成或其他需要唯一标识的场景。然而,有时会出现序列跳号(skip sequence numbers)的情况,即序列值没有按照...
通过上面的例子,我们可以看到如何在 Oracle 中使用 `Sequence` 来实现主键自增的功能。这种方法非常适用于那些需要唯一标识符但又没有内置自增功能的情况。`Sequence` 的灵活性也使得开发者可以根据实际需求来定制...
此外,SQL Server也提供了一些其他机制,如`SEQUENCE`对象(自SQL Server 2012起引入),它可以创建类似于Oracle Sequence的对象,但同样不能直接在非存储过程的`SELECT`语句中使用。如果你使用的是SQL Server 2012...
以下将详细介绍两种重置Oracle Sequence的方法。 方法一: ```sql DECLARE n NUMBER(10); tsql VARCHAR2(100); p_seqName varchar2(20); BEGIN p_seqName := 'SEQ_RUN_ID'; EXECUTE IMMEDIATE 'SELECT ' ...
在Oracle数据库中,`sequence`机制是一种自动生成唯一数值序列的方法,常用于为主键字段提供连续的整数值。它类似于其他数据库系统中的自动增长字段,但在Oracle中更加灵活可控。本文将详细介绍`sequence`的基本概念...
在Oracle中,Identity功能相对较新,与Sequence类似但使用更简便。在DB2和PostgreSQL中,Identity的概念与Sequence相对应,但它们的用法和管理方式略有不同。 总的来说,Sequence在Oracle、DB2和PostgreSQL中的实现...
序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START WITH ...
### Oracle SQL*Loader 使用方法详解 #### 一、SQL*Loader 概览 SQL*Loader 是 Oracle 数据库中用于批量导入外部数据至数据库的强大工具。它不仅具备与 DB2 Load 工具类似的功能,还提供了更为灵活的加载选项,...
根据提供的文件信息,我们可以深入探讨Oracle数据库中的...通过以上的详细介绍,我们已经了解了在Oracle数据库中如何创建序列、使用各种约束以及如何解锁用户的基本方法。这些技能对于维护和管理Oracle数据库至关重要。
在MySQL中,我们通常使用`AUTO_INCREMENT`属性来定义自增主键,而在Oracle中,可使用`SEQUENCE`对象来生成序列号。在数据同步过程中,如果需要保持两个数据库的主键一致,需要在插入Oracle时根据MySQL的最新主键值...