2013-04-09 88 views
0

我在甲骨文以下查询:插入与序列甲骨文

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

我想实现这个查询时,列ID有sequence称为mysequence。 有人知道解决方案吗? 谢谢!

回答

4
INSERT INTO table2 
(ID,Name,Address,MOL) 
SELECT mysequence.nextval,table2.Name,table2.Address,’sometext’ 
FROM table2 
WHERE table2.ID=1000; 
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留空,并自动填充下一个序列值。