我准备好把这个头发撕开了.我对MS sql很新,并且在任何地方都没有看到类似的帖子.
当我尝试这样做的声明:
INSERT INTO qcRawMatTestCharacteristic VALUES(NULL,1,'',GETDATE(),1)
我得到以下内容:
Cannot insert the value NULL into
column ‘iRawMatTestCharacteristicId’,
table
‘Intranet.dbo.qcRawMatTestCharacteristic’;
column does not allow nulls. INSERT
fails.
我明白错误,但是null值是针对我的主字段和int数据类型的.
有任何想法吗!?
解决方法
任何关系数据库中的主键都不允许为空 – 它是主键的主要基本特征之一.
见:SQL by Design: how to Choose the primary key
Never Null
No primary key value can be null,nor can you do anything to
render the primary key null. This is
an inviolate rule of the relational
model as supported by ANSI,of
relational database management system
(RDBMS) design,and of sql Server.
更新:好的,所以你想要一个“自动递增”主键在sql Server中.
您需要在CREATE TABLE语句中将其定义为INT IDENTITY:
CREATE TABLE dbo.YourTable(ID INT IDENTITY,col1 INT,...,colN INT)
然后当您执行INSERT时,您需要显式指定要插入的列,但是不要在该列表中指定“ID”列,则sql Server将自动处理查找适当值:
INSERT INTO dbo.YourTable(col1,col2,colN) -- anything **except** `ID` VALUES(va1l,val2,valN)