微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

有办法做到这一点还是明确被禁止?我无法找到这样的案例的任何文件.谢谢!

解决方法

我发现这个确切的用例有特殊的语法:

INSERT INTO test_table DEFAULT VALUES;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐