2012-06-27 108 views
0

我在MySQL中有一個很好的背景,但是我對SQL Server的來龍去脈很陌生。我將通過建立和求解在MySQL完全一樣的問題問我的問題:SQL Server自動遞增下一個INSERT查詢


創建表:

CREATE TABLE IF NOT EXISTS `example` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `stuff` VARCHAR(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

值插入表:

INSERT INTO `example` (
    `id`, `stuff` 
) VALUES (
    NULL, 'Hello World' 
) ; 

通過執行上面的查詢,id列將自動接收下一個可用的整數,作爲主鍵使用,而不涉及我的工作。

然而,插入一個行int類型的SQL Server表時,嘗試了同樣的想法給了我這個錯誤:

Cannot insert the value NULL into column 'id', table 'database.user.example'; column does not allow nulls. INSERT fails. (severity 16) ... 

什麼可以在SQL Server的INSERT查詢中,將自動遞增的主像MySQL這樣的關鍵字具有NULL的值嗎?

謝謝你的時間。

回答

4

您是否將列設置爲列定義中的IDENTITY列?

CREATE TABLE example (ID int IDENTITY(1,1), Stuff VARCHAR(255)) 

INSERT INTO example (Stuff) VALUES ('Hello World!') 
+0

啊...不,我省略了。 MySQL語法以不同的方式處理該位。很高興知道這件事!有沒有一種方法可以讓表格將表中的數值「滑倒」,或者表格是否必須丟棄? –

+0

沒關係......我可以創建一個新列並刪除舊列。很好的答案! –

0

這是您需要的標識列。和@Mark Byers是正確的。只需省略列

+1

糟糕我沒有注意到他沒有將其聲明爲IDENTITY。我認爲OP已經弄清楚了這一部分! –