码迷,mamicode.com
首页 > 数据库 > 详细

oracle 序列sequence

时间:2017-03-21 12:42:25      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:重复   插入   min   logs   触发器   name   log   from   ace   

查询所有的序列:

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;

 

oracle 序列sequence

标签:重复   插入   min   logs   触发器   name   log   from   ace   

原文地址:http://www.cnblogs.com/vinsonLu/p/6593416.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!