我在使用TSQL在博客,文章,书籍,论坛,SO等文件中创建表格的脚本中经常看到“not null primary key”。为什么在TSQL中使用“not null primary key”?
例如,BING会给出630,000个结果)如果要搜索针对“非空”靠近“主键”的“SQL Server”:
http://www.bing.com/search?q=%22not+null%22+NEAR+%22primary+key%22+%22sql+server%22&go=&form=QBRE&filt=lf
我始终认为“NOT NULL”主键,至少在SQL Server中定义的不可分割的一部分
我尝试在SQL Server中创建一个带有和不带“NOT NULL”的主键的表,但无法掌握可能的差异。
即使在快速(短)插图中,为什么所有人都使用“NOT NULL”创建主键?
更新:
如何NULL识别任何东西,或是唯一的(以及防止多个空值,如果一个被允许)?它是未指定的,缺少的,不适用的值
我的问题也暗示了子问题:
如果为PK定义了“NOT NULL”,为什么UNIQUE没有被指定?
什么是PK的定义。它是唯一约束+不是NULL或唯一索引(那么为什么不是NULL)?
Plz给我链接到它的msdn文档。
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]
)
仍然不允许null捐赠:
-
微软SQL Server Management Studio中
没有行被更新。
第2行中的数据未提交。 错误来源:.Net SqlClient数据提供程序。 错误消息:无法将值NULL插入列'PK',表'TestData.dbo.T3';列不允许有空值。 INSERT失败。
该声明已终止。
纠正错误并重试或按ESC取消更改。
OK帮助
UPDATE3:
此,概念和术语的定义,可能会出现不切实际的滋扰。
关于基本概念的一些错误陈述(在沟通/讨论期间的其他意见中)有些被误认为是白痴并且在专业互动和沟通中造成障碍。
我忘了说,NOT NULL是由SSMS为PK编写的脚本!
如果可以唯一标识一条记录,你将如何找到一条记录????? – leppie 2010-10-11 11:24:26
@InSane,我对GOOGLE非常习惯,但是BING碰巧找到了GOOGLE没有做的结果(尤其是删除网页的缓存)。此外,当我只用英文搜索时,google.com重定向到google.ru会给我很多西里尔语(俄语)的结果。 – 2010-10-11 11:31:28
@leppie,我不明白, “PK = UNIQUE + NOT NULL” 在SQL Server中,PLZ发表您的答案 – 2010-10-11 11:33:11