Oracle之序列(主键自增)
2012-09-03 23:31
274 查看
1.
在Oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户收工完成处理。
序列的创建格式:
CREATE SEQUENCE sequence
[INCREMENT BY n][STARTWITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}] ;
范例:创建一个myseq的序列,验证自动增长的操作。
CREATE SEQUENCE myseq ;
序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了一下的两种操作:
nextVal : 学的序列的下一个内容
currVal : 去的序列的当前内容
范例:建立一张以验证序列的操作
现在向表中添加数据,添加数据的时候需要手工使用序列
范例:使用序列
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;
该操作执行5次。
查询testseq表:
SELECT * FROM testseq ;
可以发现,newVal的内容是种在进行自动增长的操作,而currVal使用取出当前操作的序列结果。
也就是说,现在这种序列,每次增长的幅度是1,也可以修改序列的增长幅度。
每次的增长幅度 INCREMENT BY 长度
范例:
删除序列:
重新创建序列:
CREATE SEQUENCE myseq INCREMENT BY 2;
再创建表,进行test:
DROP TABLE testseq ;
CREATE TABLE testseq( next NUMBER , curr NUMBER ) ;
插入5个数据,测试:
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;
默认情况下,序列从1开始,那么也可以使用 START WITH 指定其开始位置。
DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq INCREMENT BY 2 STARTWITH 10 ;--从10开始
创建一个序列,让其取固定值在1、3、5、7、9,循环序列。
DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq MAXVALUE 10 INCREMENT BY 2 START WITH 1
CACHE 2 CYCLE;
在Oracle中完成自动增长的功能,则只能依靠序列完成,所有的自动增长操作,需要用户收工完成处理。
序列的创建格式:
CREATE SEQUENCE sequence
[INCREMENT BY n][STARTWITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}] ;
范例:创建一个myseq的序列,验证自动增长的操作。
CREATE SEQUENCE myseq ;
序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了一下的两种操作:
nextVal : 学的序列的下一个内容
currVal : 去的序列的当前内容
范例:建立一张以验证序列的操作
CREATE TABLE testseq( next NUMBER , curr NUMBER ) ;
现在向表中添加数据,添加数据的时候需要手工使用序列
范例:使用序列
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;
该操作执行5次。
查询testseq表:
SELECT * FROM testseq ;
可以发现,newVal的内容是种在进行自动增长的操作,而currVal使用取出当前操作的序列结果。
也就是说,现在这种序列,每次增长的幅度是1,也可以修改序列的增长幅度。
每次的增长幅度 INCREMENT BY 长度
范例:
删除序列:
DROP SEQUENCE myseq ;
重新创建序列:
CREATE SEQUENCE myseq INCREMENT BY 2;
再创建表,进行test:
DROP TABLE testseq ;
CREATE TABLE testseq( next NUMBER , curr NUMBER ) ;
插入5个数据,测试:
INSERT INTO testseq(next,curr) VALUES (myseq.nextval,myseq.currval) ;
默认情况下,序列从1开始,那么也可以使用 START WITH 指定其开始位置。
DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq INCREMENT BY 2 STARTWITH 10 ;--从10开始
创建一个序列,让其取固定值在1、3、5、7、9,循环序列。
DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq MAXVALUE 10 INCREMENT BY 2 START WITH 1
CACHE 2 CYCLE;
相关文章推荐
- oracle主键设置与oracle序列
- ORACLE 主键外键问题 建立序列
- Oracle:序列和主键
- Oracle - 使用序列+触发器实现主键自增长
- 在Oracle下基于序列和触发器实现主键自增长
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- <四>Oracle创建sequence序列,实现主键自增长
- oracle 创建表空间、表、主键、外键、序列
- Oracle中用一个序列给两个表创建主键自增功能的后果
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- oracle实现自增长序列(主键)
- oracle 利用序列和触发器实现主键自增demo
- oracle 自增序列实现 可作为主键
- 基于Oracle,采用JDBC、Hibernate不同方式实现自定义序列主键生成
- oracle建表主键自增序列
- day12_序列——oracle主键自动增加
- oracle 自增序列实现 可作为主键
- oracle 创建表 序列 注释 主键
- 4.2 MyBatis_映射文件_insert_Oracle使用序列生成主键演示和获取非自增主键的值_selectKey