怎么取得oracle数据库,下一个自动增长列的值 就是我在注册的页面.当我进入注册页面,就可以知道我要添加的数据的自动增长编号是多少了.’ 数据有可能被删除.不能去数据库读取最后一个数据的编号+1.这样可能有错误.不知道数据库有没有知道自动编号的代码. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉你这种思路有问题……如果你一定要用先得到Id的话,建议你用GUID。 Oracle中提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方.下面就主要介绍一下关于sequence对象的生成,修改,删除等常用的操作: 1. 生成 Sequence 首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限.然后使用下面命令生成sequence对象: CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE -- 不设置最大值 NOCYCLE -- 一直累加,不循环 CACHE 10 ; [说明] 如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL 来使用 sequence: sequence.CURRVAL -- 返回 sequence的当前值 sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值 [说明]第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。2.修改 Sequence 用户或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create.命令格式如下: ALTER SEQUENCE emp_sequence INCREMENT BY 10 MAXVALUE 10000 CYCLE -- 到10000后从头开始 NOCACHE ; 3. 删除 Sequence DROP SEQUENCE order_seq; 序列+触发器.实现查下资料可以得到Sequence 当前的值.和下一条记录的值. SELECT 序列号.nextval FROM dual 可以得到自增值 求一oracle作业,做完联系我,谢谢…… 关于多个JOB运行 日志成功但无正确结果 oracle occi获得表数据的简单问题 求合并SQL语句 高分求Oracle售前方案 请问我想让SQL Server与Oracle中的指定表的指定字段保持同步,是否可行?应该如何做? 难题!解决再送100! 大虾请指点 麻烦看看这句话怎么错了啊? oracle 复杂查询,大牛挑战自己吧!来吧!!! oracle存储过程的参数游标应该怎样来赋值?? sql分页语法问题
首先用户要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限.然后使用下面命令生成sequence对象:
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 ; [说明]
如果指定CACHE值,ORACLE就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL 来使用 sequence:
sequence.CURRVAL -- 返回 sequence的当前值
sequence.NEXTVAL -- 增加sequence的值,然后返回 sequence 值 [说明]
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。2.修改 Sequence
用户或者是该sequence的owner,或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.
如果想要改变start值,必须 drop sequence 再 re-create.
命令格式如下:
ALTER SEQUENCE emp_sequence
INCREMENT BY 10
MAXVALUE 10000
CYCLE -- 到10000后从头开始
NOCACHE ;
3. 删除 Sequence
DROP SEQUENCE order_seq;
查下资料可以得到Sequence 当前的值.和下一条记录的值.