2013-08-29 61 views
1

the Postgres documentation on INSERT,當我用select語句結合它默認的關鍵字應該自動增量列聲明爲serial.But,它會引發我一個錯誤Postgres的序列值插入

syntax error at or near "DEFAULT" 

這裏是INSERT語句

insert into abc (id,date,serialnumber) (DEFAULT,select (data.date,data.serialnumber) from data) 
+2

你真的還在使用過時的8.2版本嗎? –

回答

2

DEFAULT只能作爲VALUES子句中INSERT語句的「文字」。即使用於INSERT,我也不能在SELECT語句的列列表中使用。

要應用默認值,只需留出列:

insert into abc (date,serialnumber) 
select date, serialnumber 
from data 

舉一個例子看這裏:http://sqlfiddle.com/#!12/d291a/1


另外:不要把一列列表到括號。 (a,b)與Postgres中的a,b不同。第一個是具有兩個屬性的單個記錄,第二個是兩個不同的列。

請參閱此SQLFiddle演示:http://sqlfiddle.com/#!12/3a890/1並注意兩個結果之間的差異。

+0

感謝您的回覆!那給我「錯誤:INSERT有更多的目標列比表達式」,這是爲什麼我試圖明確給予默認。 – learningtocode

+0

@learningtocode您真的完全**我寫的陳述嗎?聽起來就像你沒有從插入部分的列表中刪除'id'列,或者你沒有刪除列名周圍的括號(這使得結果只有一列不是兩個)。 –

+0

我確實刪除了id字段,但沒有刪除,我誤解了你的解釋,我應該刪除選擇語句中的偏差,而不是在插入語句中。非常感謝!!!仍然不確定具有兩個屬性的單個記錄是什麼 – learningtocode