2013-04-09 79 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留空,並自動填充下一個序列值。