【发布时间】:2019-02-25 18:09:04
【问题描述】:
问题:有没有办法在不指定任何列名的情况下使用所有列的默认值在 PostgreSQL 表中插入一行?
背景:如果我有一个表,其中有两列都具有默认值(或只是接受 NULL),如果我希望插入一行的值,我可以省略列名列作为默认值。例如:
CREATE TABLE test_table ( column1 TEXT, column2 TEXT );
我可以通过只为 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 ();
有没有办法做到这一点,还是明确禁止?对于这样的案例,我找不到任何文档。谢谢!
【问题讨论】:
标签: postgresql