问题描述
|
如果我不想在仅包含具有自动生成的ID的一列的表中插入行,我的sql语句(MS-sql)应该如何显示?
以下两个查询将不起作用:
INSERT INTO MyTable (MyTableId) VALUES (Null)
-- or simply
INSERT INTO MyTable
谢谢任何小费。
sl3dg3
解决方法
INSERT INTO MyTable (MyTableId) VALUES (Null)
隐式尝试将一个null插入identity列,因此将无法使用,因为identity列可能永远不会为空,并且如果没有SET选项,则无论如何都无法插入任意值,而是可以使用:
INSERT INTO MyTable DEFAULT VALUES
,为了完整起见,SQL标准和大多数数据库为此支持DEFAULT VALUES
子句:
INSERT INTO MyTable DEFAULT VALUES;
这在
BR
火鸟
H2
数据库
英格利斯
PostgreSQL的
SQLite的
SQL Server(您的数据库)
Sybase SQL Anywhere
如果不支持上述方法,您仍然可以将此语句写为解决方法:
INSERT INTO MyTable (MyTableId) VALUES (DEFAULT);
然后,它也可以使用:
访问
DB2
玛丽亚数据库
的MySQL
甲骨文
有关更多详细信息,请参见以下博客文章:
http://blog.jooq.org/2014/01/08/lesser-known-sql-features-default-values/