oracle序列
来源:互联网 发布:流程图在线制作软件 编辑:程序博客网 时间:2024/06/14 10:17
序列:数据库对象之一。从指定整数开始,按照特定的步长增加,从而获取新的整数。
【1】创建序列
create sequence comployee_seq;
--查看序列对象信息select * from user_objects where object_type='SEQUENCE' and object_name = 'COMPLOYEE_SEQ';--结果OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY NAMESPACE EDITION_NAME-------------- --------------- ----------- ------------------- ------- ------------ --------- ---------- ------------------------------COMPLOYEE_SEQ 72199 SEQUENCE 2017/9/7 22 2017/9/7 22:1 2017-09-07:22:10:37 VALID N N N 1 --查看序列信息select * from user_sequences where sequence_name='COMPLOYEE_SEQ';--结果SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBER-------------------------- ---------- ------------ ---------- ---------- ---------- -----------COMPLOYEE_SEQ 1 1E27 1 N N 20 1--创建序列后首次使用序列,会报错select comployee_seq.currval from dual;--创建序列后需要先使用nextval,然后再使用currval就可以使用了select comployee_seq.nextval from dual;--利用序列向t_employee表中插入数据,报错,因为序列的当前值和表中的id最大值不一致insert into t_employee values(comployee_seq.nextval,'张三',6,'XXX');--查看序列的当前值select comployee_seq.currval from dual;--解决方法:--1.多次执行序列知道nextval达到表中id的最大值,不适合数据量太大的--2.在创建序列的时候指定序列起始值drop sequence comployee_seq;【2】修改序列的属性
start with指定序列的初始值
minvalue:最小值
maxvalue:最大值
increment by:步长
cache:缓存,minvalue和maxvalue根据increment by一次循环所能获得的数。一次性读入缓存,nextval时再取出。
cycle:开启序列在minvalue和maxvalue之间循环取值
--重新创建序列并制定初始值create sequence comployee_seq start with 13;select comployee_seq.nextval from dual;select comployee_seq.currval from dual;--重新利用序列插入数据insert into t_employee values(comployee_seq.nextval,'张三',6,'XXX');注意:序列的minval不能大于当前值,报错下式--修改序列的属性alter sequence comployee_seq minvalue 12;alter sequence comployee_seq maxvalue 200;--最大值设为无限,即没有最大值alter sequence comployee_seq nomaxvalue;--修改序列的步长create sequence test_seq;select test_seq.nextval from dual;--默认步长为2alter sequence test_seq increment by 5;--查看test_seq的序列属性select * from user_sequences where lower(sequence_name)='test_seq';drop sequence test_seq;create sequence test_seqstart with 21minvalue 20maxvalue 30increment by 1;select test_seq.nextval from dual;--修改循环标志位Yalter sequence test_seq cycle;alter sequence test_seq cache 10;--利用序列获得流水号create table target( object_id number not null primary key, object_name varchar2(20), object_type varchar2(20), status varchar2(10));create sequence tartget_seq;insert into target(object_id,object_name,object_type,status)select tartget_seq.nextval,object_name,object_type,status from user_objects;select * from target;select * from user_sequences where lower(sequence_name)='comployee_seq';select * from t_employee;
阅读全文
1 0
- Oracle序列
- oracle 序列
- oracle序列
- oracle 序列
- Oracle序列
- Oracle序列
- Oracle 序列
- oracle 序列
- oracle序列
- oracle序列
- Oracle序列
- Oracle 序列
- oracle序列
- oracle 序列
- oracle序列
- Oracle序列
- Oracle-序列
- oracle 序列
- linux
- 水果忍者VR原型 二
- C++杂记(1)
- spring-boot logging自定义控制台日志颜色
- spring对session和事务的管理以及OpenSessionInViewFilter是如何工作的
- oracle序列
- 通过git-bash提交项目代码
- Fedora26使用PPPoE以及为Firefox安装Flash
- 推荐系统冷启动常用解决方案
- 24 Game CodeForces
- mongodb3.x用户创建
- Angularjs ocLazyLoad-master 应用
- GNU AWK
- 欢迎使用CSDN-markdown编辑器