如果我不想向表中插入一行,其中包含只有一列包含自動生成的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