Oracle序列与手动插入相结合

时间:2016-11-28 22:59:24

标签: database oracle insert sequence

在Oracle中,如果我创建一个带有ID字段的表,并为该字段创建一个序列对象,以自动递增1并从1开始。

IE:ID:1,2,3,4,5,6等......

然后对于表的第一个记录,我手动执行插入,IE:

insert into table(ID, etc...) values (1, etc...)

如果序列对象用于下一次插入,序列对象是否会自动跳转到下一个可用ID(2)?

2 个答案:

答案 0 :(得分:0)

迁移数据时经常会发现此要求。您迁移数据时没有生成序列生成的文档编号。迁移后,您使用序列生成文档/行号。为避免冲突,请使用序列的数字范围,该数字范围与迁移编号范围不同。

答案 1 :(得分:0)

您可以创建一个触发器来自动增加序列值。

CREATE OR REPLACE TRIGGER <tgr_name>
BEFORE INSERT ON <table> 
FOR EACH ROW

BEGIN
  SELECT seq_name.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/