oracle中创建序列以及序列使用注意事项
2013-06-09 23:33
337 查看
oracle中创建序列以及序列使用注意事项
1.oracle是通过序列(sequence)来处理自动增长列
用法:
create sequense my_seq //创建序列名:my_seq
start with 1 //从1开始
increment by 1 //每次增长1
maxvalue 999999 //nomaxvalue(不设置最大值) ---最大值
minvalue 1 //最小值
cycle //nocycle 一直累加,不循环 ;cycle 表示循环
nocache ---缓存
//cache 10 表示一次产生10个号,
//但是使用缓存产生号,优点是提高效率,缺点是可能产生跳号
//上面表示从1开始,每次增长1,最大值为999999,之后又循环开始
---创建表
create table test1(id number primary key ,name varchar2(32));
insert into test1 values(myseq.nextval,'abc');
insert into test1 values(myseq.nextval,'bdc');
(1)可以为表中的列自动产生值
(2)由用户创建数据库对象,并可由多个用户共享
比如:system用户使用scott创建的序列,从什么开始增长?
答:接着scott里面的增长
(3)一般用于主键或唯一列
2.序列细节说明:
一旦定义了某个序列,可以使用currval,nextval
currval:返回sequence的当前值
nextval:返回增加sequence的值,然后返回sequence的值
比如:
序列名.currval:select 方案名.序列名.currval from dual;//用于查看当前序列是多少
序列名.nextval:select 方案名.序列名.nextval from dual;//用于查看当前序列的下一个值是多少
【什么时候使用sequence】
①不包含子查询,snapshot,view的select语句【用的少】
②insert语句的子查询中【用的较多】
③insert语句的values 中【用的多】
④update的set中【用的较多】
3:使用sequence注意事项:
①currval总是返回当前sequence的值,只有在第一次nextval初始化后,才能使用currval,
否则会出错。每使用一次nextval,就会增加一次sequence的值,同一个语句里面要是有多个nextval,其数值就是不一样的
②第一次nextval返回的值是初始值:随后的nextval会自动增加定义的increment by值,然后
返回增加后的值
③如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取会更快,
cache里面取完后,oracle自动再取一组到cache,使用cache或许会跳号,比如数据库突然不正常
down掉,cache中的sequence就会丢失,可以在定义sequence的时候,使用nocache防止这种情况
1.oracle是通过序列(sequence)来处理自动增长列
用法:
create sequense my_seq //创建序列名:my_seq
start with 1 //从1开始
increment by 1 //每次增长1
maxvalue 999999 //nomaxvalue(不设置最大值) ---最大值
minvalue 1 //最小值
cycle //nocycle 一直累加,不循环 ;cycle 表示循环
nocache ---缓存
//cache 10 表示一次产生10个号,
//但是使用缓存产生号,优点是提高效率,缺点是可能产生跳号
//上面表示从1开始,每次增长1,最大值为999999,之后又循环开始
---创建表
create table test1(id number primary key ,name varchar2(32));
insert into test1 values(myseq.nextval,'abc');
insert into test1 values(myseq.nextval,'bdc');
(1)可以为表中的列自动产生值
(2)由用户创建数据库对象,并可由多个用户共享
比如:system用户使用scott创建的序列,从什么开始增长?
答:接着scott里面的增长
(3)一般用于主键或唯一列
2.序列细节说明:
一旦定义了某个序列,可以使用currval,nextval
currval:返回sequence的当前值
nextval:返回增加sequence的值,然后返回sequence的值
比如:
序列名.currval:select 方案名.序列名.currval from dual;//用于查看当前序列是多少
序列名.nextval:select 方案名.序列名.nextval from dual;//用于查看当前序列的下一个值是多少
【什么时候使用sequence】
①不包含子查询,snapshot,view的select语句【用的少】
②insert语句的子查询中【用的较多】
③insert语句的values 中【用的多】
④update的set中【用的较多】
3:使用sequence注意事项:
①currval总是返回当前sequence的值,只有在第一次nextval初始化后,才能使用currval,
否则会出错。每使用一次nextval,就会增加一次sequence的值,同一个语句里面要是有多个nextval,其数值就是不一样的
②第一次nextval返回的值是初始值:随后的nextval会自动增加定义的increment by值,然后
返回增加后的值
③如果指定cache值,oracle就可以预先在内存里面放置一些sequence,这样存取会更快,
cache里面取完后,oracle自动再取一组到cache,使用cache或许会跳号,比如数据库突然不正常
down掉,cache中的sequence就会丢失,可以在定义sequence的时候,使用nocache防止这种情况
相关文章推荐
- oracle中创建序列以及序列使用注意事项
- oracle创建序列以及时间戳的使用
- oracle创建表中LONG字段类型的使用注意事项
- oracle 开窗函数的使用,表的外关联,子查询的封装以及where使用的注意事项
- 手动创建Oracle中表空间和用户的代码以及注意事项
- 在hibernate中使用Oracle序列注意事项
- 如何不用oracle client直接使用plsql远程连接oracle数据库以及需要注意的事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- linux nfs服务配置挂载以及oracle使用nfs存储挂载注意事项
- PDO防注入原理分析以及使用PDO的注意事项
- Qt中如何使用样式表QPalette以及相关注意事项
- iOS CoreData介绍和使用(以及一些注意事项)
- 【转】Oracle Outline使用方法及注意事项
- json-c-0.9 在linux上编译使用 以及使用注意事项
- 开发中使用临时表的应用场景以及注意事项
- 函数的创建及使用时的注意事项
- MySQL索引类型总结和使用技巧以及注意事项
- oracle创建dblink注意事项 ORA-04052
- apache 的FTPClient使用以及注意事项