创建和修改 PRIMARY KEY 约束

可以在创建表时创建单个 PRIMARY KEY 约束作为表定义的一部分。如果表已存在,且没有 PRIMARY KEY 约束,则可以添加 PRIMARY KEY 约束。一个表只能有一个 PRIMARY KEY 约束。

如果已存在 PRIMARY KEY 约束,则可以修改或删除它。例如,可以让表的 PRIMARY KEY 约束引用其他列,更改列的顺序、索引名、聚集选项或 PRIMARY KEY 约束的填充因子。但是,不能更改使用 PRIMARY KEY 约束定义的列长度。

注意注意

若要修改 PRIMARY KEY 约束,必须先删除现有的 PRIMARY KEY 约束,然后再用新定义重新创建该约束。

为表中的现有列添加 PRIMARY KEY 约束时,数据库引擎将检查现有列的数据和元数据以确保主键符合以下规则:

  • 列不允许有空值。

    创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。由于稀疏列必须允许空值,因此稀疏列不能用作主键的一部分。

  • 不能有重复的值。

    如果为具有重复值或允许有空值的列添加 PRIMARY KEY 约束,则数据库引擎将返回一个错误并且不添加约束。

不能添加违反以上规则的 PRIMARY KEY 约束。

数据库引擎会自动创建唯一的索引来强制实施 PRIMARY KEY 约束的唯一性要求。如果表中不存在聚集索引或未显式指定非聚集索引,则将创建唯一的聚集索引以强制实施 PRIMARY KEY 约束。

如果存在以下情况,则不能删除 PRIMARY KEY 约束:

  • 如果另一个表中的 FOREIGN KEY 约束引用了 PRIMARY KEY 约束,则必须先删除 FOREIGN KEY 约束。

  • 表包含应用于自身的 PRIMARY XML 索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值