在Postgresql表中插入一行仅使用默认值

26

问题:在PostgreSQL表中是否有一种方法可以使用所有列的默认值而不指定任何列名来插入行?

背景信息:如果我有一个表,其中两个列都具有默认值(或仅接受NULL),则在插入行时,如果我希望该列的值为默认值,则可以省略列名。例如:

CREATE TABLE test_table ( column1 TEXT, column2 TEXT );

我可以只指定column1或column2的值进行插入,缺失的列将会被填充默认值(在这种情况下为NULL):

我可以只输入column1或column2一个值进行表格插入,系统会自动将缺失的列以默认值(此处为NULL)填充:

INSERT INTO test_table (column1) VALUES ('foo');
INSERT INTO test_table (column2) VALUES ('bar');

上述代码将会得到两行结果:[('foo', NULL), (NULL, 'bar')]。然而,如果我想要使用默认值来填充这两列,似乎我必须至少指定一列名并显式地给它赋默认值。以下命令都是合法的:

INSERT INTO test_table (column1) VALUES (DEFAULT);
INSERT INTO test_table (column2) VALUES (DEFAULT);
INSERT INTO test_table (column1, column2) VALUES (DEFAULT, DEFAULT);

我无法创建一个有效的命令,该命令允许我省略所有列名称。以下尝试都是非法的:

INSERT INTO test_table;
INSERT INTO test_table () VALUES ();

有没有办法做到这一点,或者明确禁止这样做?我无法找到任何关于这种情况的文档。谢谢!

1个回答

40

我发现针对这种情况有特殊的语法:

INSERT INTO test_table DEFAULT VALUES;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接