0

我在 Oracle 中有以下查询:

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

我想在列 IDsequence调用mysequence时实现此查询。有人知道解决方案吗?谢谢!

4

2 回答 2

4
INSERT INTO table2 
(ID,Name,Address,MOL)
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
于 2013-04-09T19:04:20.903 回答
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 留空,它会自动填充下一个序列值。

于 2013-04-09T19:20:27.860 回答