我准备把这头发撕掉了.我对MS SQL很新,并且在任何地方都没有看过类似的帖子.
当我尝试做这样的声明时:
INSERT INTO qcRawMatTestCharacteristic
VALUES(NULL, 1,1,1,1,1,1,1,'','','', GETDATE(), 1)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
无法将值NULL插入列'iRawMatTestCharacteristicId',表'Intranet.dbo.qcRawMatTestCharacteristic'; 列不允许空值.INSERT失败.
我理解错误,但null值是我的主要字段与int数据类型.
有任何想法吗!?
我在博客,文章,书籍,论坛,SO中等在TSQL中创建表的脚本中经常看到"not null primary key".
例如,如果要搜索"非空"NEAR"主键""sql server",BING会给出630,000个结果((仅用英语):http://www.bing.com/search? q =%22not + null%
22 + NEAR +%22primary +密钥%22 +%22sql +服务器%22&去=&形式= QBRE&FILT = LF
我总是认为"NOT NULL"是PRIMARY KEY定义不可分割的一部分,至少在SQL Server中是这样.
我尝试在SQL Server中使用和不使用"NOT NULL"的主键创建表,但无法掌握可能的差异.
为什么即使在快速(简短)插图中,所有人都使用"NOT NULL"来创建主键?
更新:
NULL如何识别任何内容或是唯一的(以及如果允许多个NULL,则阻止多个NULL)?它是未指定的,缺失的,不适用的值
我的问题也暗示了子问题:
如果为PK定义"NOT NULL",为什么不指定UNIQUE?
PK的定义是什么?它是UNIQUE CONSTRAINT + NOT NULL还是UNIQUE INDEX(那么为什么NOT NULL)?
Plz给我链接到msdn docs.
Update2: @Damien_The_Unbeliever
为什么不是没有"NOT NULL"的同义词?
CREATE TABLE T3
(
PK int -- NOT NULL commented out
, nonPK int -- to double-check my sanity
, constraint PK_vgv8 PRIMARY KEY (PK) on [PRIMARY]
)
Run Code Online (Sandbox Code Playgroud)
仍然不允许NULL给出:
Microsoft …