2016-10-17 109 views
1

我正在解決一個問題,我需要使用select語句向最近創建的表中插入135行。我在該表上有一些NOT NULL約束,我不明白如何改變我的SELECT以插入正確的信息。在使用INSERT INTO語句時填充表的NOT NULL列

這裏就是我想要做的事:

CREATE SEQUENCE target_table_s1 START WITH 1001; 

INSERT INTO target_table(colA,ColB,ColC,ColD,ColE) 
target_table_s1.NEXTVAL, 
(SELECT (colB,colC,ColD) 
FROM source_table), 
colE; 

凡可樂是序列號(以提供target_table主鍵)和科爾基本上只是需要一些簡單的像SYSDATE。

有關我如何完成這項工作的任何建議?我知道我上面寫的東西不起作用,但這是我能夠說明我想要完成的最佳方式。我是否需要找到一種方法將我的序列放入select語句中,以便它遵循適當的「INSERT INTO SELECT」格式?

回答

4

,我認爲你應該在這裏使用INSERT INTO ... SELECT結構:

INSERT INTO target_table (colA,ColB,ColC,ColD,ColE) 
SELECT target_table_s1.NEXTVAL, ColB, ColC, ColD, SYSDATE 
FROM source_table 

我假定上面要的SYSDATE插入列E.

+0

所以這是一個很值得我要找因爲我幾乎解決了我的問題。也許你可以用最後一點來幫助我。這裏是我的新上下文: – theonlydidymus

+0

INSERT INTO target_table(colA,colB,colC,colD,colE) – theonlydidymus

+0

SELECT seq.NEXTVAL,f.colB,f.colC,f.colD,SYSDATE FROM(SELECT colB,colC,colD FROM source_table ); 如何將源表格作爲f別名?我只使用「FROM source_table f」嗎?如果from語句涉及多個表怎麼辦? (對不起,我的意見一直提交,即使我還沒有完成) – theonlydidymus