问题:有没有办法在PostgreSQL表中使用所有列的默认值插入行而不指定任何列名?
背景:如果我有一个包含两列的表都有默认值(或者只是接受NULL),我可以在插入行时省略列名,如果我希望该列的值为默认值.例如:
CREATE TABLE test_table ( column1 TEXT, column2 TEXT );
Run Code Online (Sandbox Code Playgroud)
我可以通过仅指定column1或column2的值来插入表中,并且将使用默认值填充缺失的列(在这种情况下为NULL):
INSERT INTO test_table (column1) VALUES ('foo');
INSERT INTO test_table (column2) VALUES ('bar');
Run Code Online (Sandbox Code Playgroud)
以上将导致两行:[('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);
Run Code Online (Sandbox Code Playgroud)
我无法创建一个允许我省略所有列名的有效命令.以下尝试都是非法的:
INSERT INTO test_table;
INSERT INTO test_table () VALUES ();
Run Code Online (Sandbox Code Playgroud)
有办法做到这一点还是明确被禁止?我无法找到这样的案例的任何文件.谢谢!
postgresql ×1