首页 > 解决方案 > 唯一索引/约束以及 NOT NULL 关键字在技术上与主键相同吗?

问题描述

主键可以是集群的或非集群的。它是唯一的,不为空。

假设如果我创建一个唯一索引/约束和关键字 NOT NULL,那么这在技术上与主键相同吗?

标签: sql-servertsql

解决方案


这取决于您所说的“技术上”是什么意思。物理索引与主键、唯一约束或唯一索引相同。外键可以引用唯一约束或唯一索引以及主键。

想到的区别是:

  • 每个表只允许一个主键
  • SQL Server 将对主键列强制执行 NOT NULL 要求,但不会对唯一约束/索引强制执行
  • 唯一索引允许附加选项,例如INCLUDE和子句,但在指定子句WHERE时不能被 FK 约束引用WHERE

推荐阅读