插入ID自动生成,仅一列

问题描述

| 如果我不想在仅包含具有自动生成的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/