首页 > 代码库 > oracle 序列sequence
oracle 序列sequence
查询所有的序列:
select ‘create sequence ‘||sequence_name|| ‘ minvalue ‘||min_value|| ‘ maxvalue ‘||max_value|| ‘ start with ‘||last_number|| ‘ increment by ‘||increment_by|| (case when cycle_flag=‘N‘ then ‘‘ else ‘ cycle ‘ end) || (case when order_flag=‘N‘ then ‘‘ else ‘ order ‘ end) || (case when cache_size=0 then ‘ nocache‘ else ‘ cache ‘||cache_size end) ||‘;‘from USER_sequences;
查出来的语句可以直接执行,当然要先删除原来的序列。还原oracle备份库的时候,备份库的数据可能比目标库的数据有所更新,序列记录最大值也已经变更,而目标库的序列记录最大值如果还是原来的值,不删除序列重建的话,那么就有可能插入重复的唯一值,从而报错。
为甚么要使用序列sequence?
如果你想像sql那样加个自增流水号,sql直接选择自增的int就可以了,可是oracle却没有这样的功能。
要做到像sql的自增流水号,需要两个步骤:
1.为每个表增加独立的序列
2.增加触发器
序列添加:
create sequence S_DEMO_TABLEminvalue 1maxvalue 9999999999999999999999999999start with 1increment by 1cache 10;
添加触发器:
CREATE OR REPLACE TRIGGER pw_taskitemInsert BEFORE INSERT ON pw_taskitem FOR EACH ROW BEGIN SELECT S_DEMO_TABLE.nextval INTO :new.PWTASKITEMID FROM dual; END;
oracle 序列sequence
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。