Postgres序列值插入

时间:2013-08-29 21:40:54

标签: sql postgresql insert

the Postgres documentation on INSERT开始,default关键字应自动增加声明为serial的列。但是当我将它与select语句结合使用时,它会抛出错误

syntax error at or near "DEFAULT"

这是插入语句

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

1 个答案:

答案 0 :(得分:2)

DEFAULT只能作为VALUES子句中INSERT语句的“文字”。我不能在SELECT语句的列列表中使用,即使它用于INSERT

要应用默认值,只需省略列:

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

有关示例,请参阅此处:http://sqlfiddle.com/#!12/d291a/1


另外:不要将列列表放入parantheses。 (a,b)与Postgres中的a,b不同。第一个是具有两个属性的单个记录,第二个是两个不同的列。

请在此处查看此SQLFiddle演示:http://sqlfiddle.com/#!12/3a890/1并注意两个结果之间的差异。