SQL Server中表的一列可以有多少个约束

Cha*_*lla 1 sql t-sql sql-server-2008

谁能解释一下 SQL Server 中表的任何给定列最多可以设置多少个约束。

gbn*_*gbn 5

“这取决于”

  • 主键(如果是聚集索引则最多为 1 个,或者 SQL Server 2008 上最大非聚集索引的一部分 = 999)
  • 默认(每列最多一个)
  • NULL/NOT NULL(每列一个或另一个)。是的,这是一个限制
  • 检查(列或表级别:批次)
  • UNIQUE(最大非聚集索引的一部分 = SQL Server 2008 上的 999,如果聚集则为 1)
  • 外键(最多 253)

笔记:

  • 例如每个表一个 IDENTITY 或时间戳/行版本或 ROWGUIDCOL
  • 每个标准表最多有 1024 列,这明显限制了默认值的数量
  • 有些是相互排斥的

一些取自这里:SQL Server 的最大容量规范