2012-05-14 72 views
0

我與SQL Server Express的工作麻煩,我創造了這個表我有SQL Server Express的身份特徵

CREATE TABLE inventory 
(
    id INT NOT NULL IDENTITY(1,1), 
    description nvarchar(50), 
    quantity int, 
    price money 
) 

當我插入這樣的說法:

INSERT INTO inventory VALUES('water', 20, 1.50) 

我得到這個錯誤:

The number of columns in the query and the table must match. [ Number of columns in query = 3, Number of columns in table = 4 ]

,當我把這個說法:

INSERT INTO inventory VALUES(1, 'water', 20, 1.50) 

我得到這個錯誤:

The column cannot be modified. [ Column name = id ]

我以爲身份自動會增加的價值,所以我不能做任何,我怎麼能解決這個問題?在此先感謝

回答

5

必須明確在你插入

insert Inventory(Description, Quantity, Price) values (...) 
+0

但我還沒有在常規的SQL服務器這樣做指定列,這是爲什麼具體到這個數據庫?謝謝,雖然我終於可以開始編碼了。 – user1393108

+0

@ user1393108:這是一種**基本的** SQL技術 - 您應該始終定義要插入的列的列表。使用'IDENTITY',由於SQL Server(** all **版本 - 這是** NOT **特定於Express版本)將自行確定值,因此您不允許插入任何值 - 因此您需要從要插入的列列表中省略它。 –

+1

如果你想手動設置身份,你可以使用'SET IDENTITY_INSERT ON' – BartekR

相關問題