2015-10-04 76 views
0

我已經創建了以下表格,並在列ApartmentID上使用了自動增量。我想,一旦我將這個自動增量設置爲101,它會自動增加行插入,但我只是得到一個空值。SQL Server 2012 - 自動增量和空/不爲空

我的創建表代碼是; CREATE TABLE公寓 ( ApartmentID SMALLINT, - AUTOINCREMENT = 101, 租戶SMALLINT NULL默認爲0, 租錢默認爲0, CurrentOccupier SMALLINT NULL, )

因爲我包含在我創建的表自動遞增,我插入如下值: INSERT INTO dbo.Apartments(佔用人,出租,CurrentOccupier) VALUES ( '1', '400', '21'), ( '0', '450', '90'),

的以下是我的結果; ApartmentID租戶租金CurrentOccupier NULL 1 400.00 21 NULL 0 450.00 90

關注的是,ApartmentID柱NULL而非顯示101,102,103等和思考,這是與列屬性空做,我放棄了桌子在下面重新創建它;

CREATE TABLE公寓 ( ApartmentID SMALLINT NOT NULL, - AUTOINCREMENT = 101, 租戶SMALLINT NULL默認0, 租錢默認0, CurrentOccupier SMALLINT NULL, )

結果/消息我得到是 Msg 515,級別16,狀態2,行1 不能將NULL值插入到'ApartmentID'列'Apartment_2.dbo.Apartments'列中;列不會 允許空值。 INSERT失敗。

我想用我創建的第一個表,如果我可以在列ApartmentID中顯示值101,102等,當我運行查詢select * from公寓而不是單詞null。

任何/建議的幫助,將不勝感激。再次,這可能是一個簡單的錯誤,但是新的我不認識我的錯誤。我還包括 - 自動增量的前面,正如我在網上看到的那樣。

感謝 喬西

回答

1

在SQL Server聲明的列IDENTITY沒有自動遞增。在101處聲明這樣的列的語法是

CREATE TABLE Apartments 
( 
ApartmentID smallint NOT NULL IDENTITY(101,1) PRIMARY KEY, 
Occupier smallint NOT NULL default 0, 
Rent money NOT NULL default 0, 
CurrentOccupier smallint NULL 
) 

我假設您可能希望將此列作爲主鍵。如果不是這種情況,請刪除這些關鍵字。

+0

@馬丁.....謝謝你的。但是我的下一個問題就是,爲什麼身份列工作和自動增量不起作用?他們是不是應該給出同樣的結果? – Josie

+0

@Josie SQL Server不使用'autoincrement'語法。這就是MySQL。它們是不同的產品,使用不同的SQL方言。 –

+0

@Martin ....現在我覺得很愚蠢,但謝謝你爲我澄清。 – Josie

0

請嘗試下面的代碼。這應該對你有所幫助。

CREATE TABLE Apartments (ApartmentID smallint IDENTITY(101,1) NOT NULL, Occupier smallint NULL default 0, Rent money default 0, CurrentOccupier smallint NULL);