SQL Server为PersonsTable添加主键时报8111、1750错误如何解决
报错原因
SQL Server的主键约束有两个强制规则:
- 作为主键的字段必须设置为不允许存储NULL值
- 主键字段内所有值必须全局唯一,不能存在重复记录
你遇到的Msg 8111是核心报错:当前PersonsTable表的PersonID字段配置为允许NULL值,不符合主键的非空要求,直接导致约束创建失败;后续的Msg 1750是连带提示,说明因前置错误,最终约束或索引没有创建成功。
处理方案
操作前先确认PersonID列不存在NULL值、也没有重复值,否则后续语句会执行失败。从你给出的样例数据看,现有3条记录的PersonID均为唯一非空值,直接执行以下两步SQL即可完成主键设置:
-- 1. 将PersonID字段修改为非空属性 ALTER TABLE PersonsTable ALTER COLUMN PersonID INT NOT NULL; -- 2. 为PersonID字段添加主键约束 ALTER TABLE PersonsTable ADD PRIMARY KEY (PersonID);
如果执行第一步时提示字段存在NULL值,需要先把对应记录的PersonID补全为合法唯一值,或删除异常记录后再执行上述语句;如果存在重复的PersonID值,需要先将重复值处理为唯一值再操作。
内容的提问来源于stack exchange,提问作者user19129062
相关产品推荐
相关产品推荐

