Oracle 使用序列创建自增字段
来源:互联网 发布:如何申请淘宝账号步骤 编辑:程序博客网 时间:2024/05/22 00:35
在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有create sequence或者create any sequence权限
针对SEQ_EMP创建的sequence如下:
一旦定义了SEQ_EMP,你就可以用currval,nextval
currval=返回 sequence的当前值
nextval=增加sequence的值,然后返回 sequence 值
比如:
SEQ_EMP.CURRVAL
SEQ_EMP.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、view的 select 语句
- INSERT语句的子查询中
- NSERT语句的values中
- UPDATE 的 set中
可以看如下例子:
2、修改序列(Alter Sequence )
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以修改(alter)除start至以外的所有sequence参数.如果想要改变start值,必须删除序列( drop sequence ),再重新创建 (re-create ).
Alter sequence 的例子
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
3、删除序列
简单的Drop Sequence
下面是一个简单例子:
建立解发器代码为:
上面的代码就可以实现id自动递增的功能了。
1、Create Sequence
你首先要有create sequence或者create any sequence权限
Sql代码
- CREATE SEQUENCE SEQ_EMP
- INCREMENT BY 1 -- 每次加几个
- START WITH 1 -- 从1开始计数
- NOMAXVALUE -- 不设置最大值 (MAXVALUE 99999999)
- NOCYCLE -- 一直累加,不循环
- CACHE 10; --设置缓存CACHE个序列,如果系统DOWN掉了或者其它情况将会导致序列不连续,也可以设置为NOCACHE
针对SEQ_EMP创建的sequence如下:
Sql代码
- CREATE SEQUENCE SEQ_EMP
- MINVALUE 1
- MAXVALUE 99999999
- START WITH 1
- INCREMENT BY 1
- NOCACHE;
一旦定义了SEQ_EMP,你就可以用currval,nextval
currval=返回 sequence的当前值
nextval=增加sequence的值,然后返回 sequence 值
比如:
SEQ_EMP.CURRVAL
SEQ_EMP.NEXTVAL
可以使用sequence的地方:
- 不包含子查询、snapshot、view的 select 语句
- INSERT语句的子查询中
- NSERT语句的values中
- UPDATE 的 set中
可以看如下例子:
Sql代码
- INSERT INTO T_EMPLOYEE(ID,NAME,ORDER)VALUES(SEQ_EMP.NEXTVAL,'WANG',100);
2、修改序列(Alter Sequence )
你或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以修改(alter)除start至以外的所有sequence参数.如果想要改变start值,必须删除序列( drop sequence ),再重新创建 (re-create ).
Alter sequence 的例子
Sql代码
- ALTER SEQUENCE SEQ_EMP
- INCREMENT BY 10
- MAXVALUE 10000
- CYCLE -- 到10000后从头开始
- NOCACHE ;
影响Sequence的初始化参数:
SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。
3、删除序列
简单的Drop Sequence
Sql代码
- drop sequence SEQ_EMP;
下面是一个简单例子:
Sql代码
- CREATE SEQUENCE SEQ_EMP
- MINVALUE 1
- MAXVALUE 99999999
- START WITH 1
- INCREMENT BY 1
- NOCACHE
- ORDER;
建立解发器代码为:
Sql代码
- CREATE OR REPLACE TRIGGER TRI_EMP_ID --触发器名称
- BEFORE INSERT ON T_EMPLOYEE --T_EMPLOYEE是表名
- FOR EACH ROW
- DECLARE
- NEXTID NUMBER;
- BEGIN
- IF :NEW.ID IS NULL OR :NEW.ID=0 THEN --ID是列名
- SELECT SEQ_EMP.NEXTVAL --SEQ_EMP正是刚才创建的序列
- INTO NEXTID
- FROM SYS.DUAL;
- :NEW.ID:=NEXTID;
- END IF;
- END TRI_EMP_ID;
上面的代码就可以实现id自动递增的功能了。
- Oracle 使用序列创建自增字段
- Oracle 使用序列创建自增字段
- Oracle 创建自增字段的方法—使用序列方法(1)
- Oracle 创建自增字段的方法—使用序列方法(2)
- 创建序列和触发器实现Oracle字段自增功能
- Oracle自增序列字段
- oracle 创建自增字段
- Oracle创建自增字段
- oracle 创建自增字段
- Oracle创建自增字段
- oracle创建自增字段
- oracle设置自增字段,oracle序列
- Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器
- oracle创建序列自增
- Oracle 创建序列自增
- oracle创建自增序列
- 创建oracle自增序列
- oracle序列实现自增字段
- 解读java的包装类
- Class.forName的作用以及为什么要用它
- eclipse 插件生成类的UML图
- 【转载】java oracle date转换大全
- java.util.Date和java.sql.Date的区别及应用
- Oracle 使用序列创建自增字段
- 拦截器与过滤器的区别
- MyEclipse10.0各个版本官网下载地址
- MyEclipse8.6各个版本官网下载地址
- Unable to update index for central http://repo1.maven.org/maven2/
- java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- python字典合并哪种方式效率最高?
- Hibernate 的基本映射
- Java反射机制深入研究