从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)
答案 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并注意两个结果之间的差异。