如果我不想在表中插入一行,我的SQL语句(MS-SQL)应该是什么样子,该表只包含一个具有自动生成ID的列?
以下两个查询无效:
INSERT INTO MyTable (MyTableId) VALUES (Null)
-- or simply
INSERT INTO MyTable
任何tipps的Thx。 sl3dg3
答案 0 :(得分:14)
INSERT INTO MyTable (MyTableId) VALUES (Null)
隐式尝试在标识列中插入一个null,因此不会有效,因为标识列可能永远不可为空,如果没有SET选项,您无法插入任意值,而是可以使用:
INSERT INTO MyTable DEFAULT VALUES
答案 1 :(得分:1)
为了完整起见,SQL标准和大多数数据库支持DEFAULT VALUES
子句:
INSERT INTO MyTable DEFAULT VALUES;
支持此功能
如果不支持上述内容,您仍然可以将此语句编写为解决方法:
INSERT INTO MyTable (MyTableId) VALUES (DEFAULT);
这将适用于:
有关详情,请参阅此博客文章:
http://blog.jooq.org/2014/01/08/lesser-known-sql-features-default-values/