2015-10-04 70 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);