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_TABLE
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 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;

 

转载于:https://www.cnblogs.com/vinsonLu/p/6593416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值