You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建外键FK_Review_Review_ID时触发Msg1750错误,求排查解决

问题根源&解决方案

嘿,这个错误我太熟悉了!你碰到的Msg 1750问题,核心原因很明确:

你要创建的外键FK_Review_Review_ID只引用了Reviewers表的Review_ID列,但Reviewers的主键是复合主键(Reviewer_ID, Review_ID)——单一的Review_ID并不是这张表的主键,也没有唯一约束,不符合外键的引用规则。

SQL对外键的要求很严格:被引用的列必须是被引用表的主键,或者是带有唯一约束的候选键。而你的Reviewers表里,只有Reviewer_ID+Review_ID的组合才能唯一标识一行数据,单独的Review_ID做不到,所以数据库直接拒绝创建这个外键。


两种解决办法,看你业务需求选:

办法1:把外键改成引用复合主键的全部列

如果你的业务逻辑是:Review表的每一条记录,需要关联到Reviewers里特定评论者+特定评论的组合,那你得这么改:

  1. 先给Review表补上Reviewer_ID列(因为现在这张表没有这个字段):
ALTER TABLE Review ADD Reviewer_ID INT NOT NULL;
GO
  1. 删除之前报错的外键(如果已经尝试创建过的话),再创建复合外键:
ALTER TABLE Review DROP CONSTRAINT IF EXISTS FK_Review_Review_ID;
GO
ALTER TABLE Review ADD CONSTRAINT FK_Review_Reviewer_Review 
    FOREIGN KEY (Reviewer_ID, Review_ID) REFERENCES Reviewers (Reviewer_ID, Review_ID);
GO

办法2:给Reviewers的Review_ID加唯一约束

如果你的业务里Review_ID本身就是全局唯一的(不需要和Reviewer_ID组合就能确定一条评论),那更简单:给Review_ID加个唯一约束,让它成为候选键,这样就能被外键引用了:

ALTER TABLE Reviewers ADD CONSTRAINT UQ_Reviewers_Review_ID UNIQUE (Review_ID);
GO
-- 现在再创建外键就没问题了
ALTER TABLE Review ADD CONSTRAINT FK_Review_Review_ID 
    FOREIGN KEY (Review_ID) REFERENCES Reviewers (Review_ID);
GO

小提醒

设计表结构的时候,外键的引用关系一定要和被引用表的主键/唯一约束对齐——复合主键对应的外键也必须是复合列,不然肯定会踩这类坑~

内容的提问来源于stack exchange,提问作者Judge15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:50:03