我在 Oracle 中有以下查询:
INSERT INTO table2
(ID,Name,Address,MOL)
SELECT table2.ID,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
我想在列 IDsequence
调用mysequence时实现此查询。有人知道解决方案吗?谢谢!
INSERT INTO table2
(ID,Name,Address,MOL)
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’
FROM table2
WHERE table2.ID=1000;
另一种方法是创建一个插入下一个序列值的触发器:
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 留空,它会自动填充下一个序列值。