插入序列oracle

时间:2013-04-09 18:51:02

标签: oracle sequence

我在Oracle中有以下查询:

INSERT INTO table2 
(ID,Name,Address,MOL)
SELECT table2.ID,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;

我希望在列ID具有名为 mysequence sequence时实现此查询。 有人知道解决方案吗? 谢谢!

2 个答案:

答案 0 :(得分:4)

INSERT INTO table2 
(ID,Name,Address,MOL)
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;

答案 1 :(得分:2)

另一种方法是创建一个插入下一个序列值的触发器:

CREATE OR REPLACE TRIGGER myschema.table2_ins_trg
   BEFORE INSERT ON myschema.table2 FOR EACH ROW
   WHEN (New.ID IS NULL) 
BEGIN
  SELECT myschema.mysequence.Nextval INTO :New.ID FROM dual;
END;

然后在插入时取消ID:

INSERT INTO table2 
  (Name, Address, MOL)
SELECT table2.Name, table2.Address, 'sometext'
  FROM table2
 WHERE table2.ID = 1000;

我喜欢这种方法,因为如果我使用GUI工具进行插入,我可以将ID留空,它将自动填充下一个序列值。