
1、创建表:
create table test
(id int,
name varchar2(20))
2、创建序列:
Create sequence seq_test_id
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
3、插入数据:
insert into test values (seq_test_id.nextval,'badkano')
4、再插入一条数据:
insert into test values (seq_test_id.nextval,'百度知道团长')
这样可见,序号是添加成功的。
Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的。但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence SequenceName Start With N。事实上,在Oracle Db中,修改序列没有这样的语法。没有这样的语法情况怎么办,有二种方法可以完成1.先删除序列,然后重新创建。不过这不是当前要讲的重点。这个方法比较方便。
2.通过Increment By来实现修改初始值。
例如:若序列名称是SeqTest2010_S,初始值是13,而现在要设置初始值为1020,Increment By值为:1007(1020-13)
2.1 执行:Alter Sequence SeqTest2010_S Increment By 1007
2.2 执行:Select SeqTest2010_S.NextVal From Dual
2.3 执行:Alter Sequence SeqTest2010_S Increment By 1
修改完成。简单吧
根据我自己的经验,oracle的序列是不认自己填写的数字的,所以想要这么 *** 作只能先删除序列才可以。如果是修改的话,要删除序列才能修改,也就是数艘要分三步 *** 作
(1)删除序列(把语句复制下来),可是也要复制触发器的语句(当然重新编译一下触发器也可以,这样会让触发器无效)
(2)修改序号(至于你说的修改为指定区间,这个简单,比如你要把1-20,改为50001-50020,那么就是id+50000即可,只要where中限定范围就可以了。)
(3)重建序列,并重新设定起始值(至少设定为新的最大值+1),别忘了相关触发器
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)