小编Jim*_*Pri的帖子

仅使用默认值将行插入Postgresql表

问题:有没有办法在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

7
推荐指数
1
解决办法
528
查看次数

标签 统计

postgresql ×1