sql-server - 唯一索引/约束以及 NOT NULL 关键字在技术上与主键相同吗?
问题描述
主键可以是集群的或非集群的。它是唯一的,不为空。
假设如果我创建一个唯一索引/约束和关键字 NOT NULL,那么这在技术上与主键相同吗?
解决方案
这取决于您所说的“技术上”是什么意思。物理索引与主键、唯一约束或唯一索引相同。外键可以引用唯一约束或唯一索引以及主键。
想到的区别是:
- 每个表只允许一个主键
- SQL Server 将对主键列强制执行 NOT NULL 要求,但不会对唯一约束/索引强制执行
- 唯一索引允许附加选项,例如
INCLUDE
和子句,但在指定子句WHERE
时不能被 FK 约束引用WHERE
推荐阅读
- erlang - Erlang/Elixir 中如何进行消息恢复
- filtering - 更改 mapbox 图层中特定点的颜色
- java - 无法解析 com.android.tools.build:gradle:3.1.4,react-native run-android
- python - 将文件输入的标准输出保存到文件
- neo4j - 将sql server 2017数据库导入neo4j
- java - 如何使用另一个列表中的 Map 属性创建一个新列表
- java - 使用 InheritanceType.JOINED 时如何避免空子表?
- c# - DTO 类的数据类型
- django - 通过添加额外的字段覆盖 Django Unique_Together 验证
- javascript - nodeList 仅给出最后一项 onClick