如果我不想向表中插入一行,其中包含只有一列包含自动生成的ID,我的SQL语句(MS-SQL)应该如何显示?插入ID(自动生成,仅列)
以下两个查询将不工作:
INSERT INTO MyTable (MyTableId) VALUES (Null)
-- or simply
INSERT INTO MyTable
THX任何的窍门。 sl3dg3
如果我不想向表中插入一行,其中包含只有一列包含自动生成的ID,我的SQL语句(MS-SQL)应该如何显示?插入ID(自动生成,仅列)
以下两个查询将不工作:
INSERT INTO MyTable (MyTableId) VALUES (Null)
-- or simply
INSERT INTO MyTable
THX任何的窍门。 sl3dg3
INSERT INTO MyTable (MyTableId) VALUES (Null)
隐含试图插入一个空到标识列,所以这是行不通的身份列可能永远不会为空的,并没有SET选项,你也看不插入任意值,而是可以使用:
INSERT INTO MyTable DEFAULT VALUES
为了完整性,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/
为什么你想有一列和一个列标记为标识列的表? – Chandu 2011-04-13 14:53:51
更多关于@Cybermate评论,为什么要插入到它;) – Anuraj 2011-04-13 14:57:14
@Cybernate - 这很容易 - 兼容性/可移植性与运行在Oracle,没有身份列(它使用序列代替)的数据库。这样的表格可以用来模拟Oracle序列。您仍然需要对每个平台的查询进行调整,但至少(以及其他几个步骤)可以使您的表定义相同。 – 2011-04-13 15:00:04