【问题标题】:There are no primary or candidate keys in the referenced table 'Reviewers' that match the referencing column [closed]引用表“审阅者”中没有与引用列匹配的主键或候选键[关闭]
【发布时间】:2018-05-10 05:06:43
【问题描述】:

我收到此错误:

引用表“Reviewers”中没有与外键“FK_Review_Review_ID”中的引用列列表匹配的主键或候选键。
消息 1750,第 16 级,状态 0,第 57 行
无法创建约束或索引。查看以前的错误。

我的代码:

/* Table Creation Products */

CREATE TABLE Products
(
    Product_Name VARCHAR(120) NOT NULL
    ,Product_URL VARCHAR(165) NOT NULL
    ,Price MONEY CHECK (Price > 0) NOT NULL
)
GO

/* Entity Integrity by Primary Key*/
ALTER TABLE Products
ADD CONSTRAINT PK_Products_Product_URL
PRIMARY KEY (Product_URL)
GO

/* Table Creation Reviewers */
CREATE TABLE Reviewers
(
    Reviewer_ID INT NOT NULL
    ,Review_ID INT NOT NULL
    ,Review_Summary VARCHAR(15) NOT NULL
    ,Review VARCHAR(280) NOT NULL
    ,Review_Date DATE
    ,Overall_Rating INT NOT NULL
    ,Helpful INT
    ,Unhelpful INT
)
GO

ALTER TABLE Reviewers
ADD CONSTRAINT PK_Reviewers_Reviewer_ID_Review_ID
PRIMARY KEY (Reviewer_ID, Review_ID)
GO

/* Table Creation Review */
CREATE TABLE Review
(
    Product_URL VARCHAR(165) NOT NULL
    ,Review_ID INT NOT NULL
)
GO

/* Entity Integrity by Primary Key*/ 
ALTER TABLE Review
ADD CONSTRAINT PK_Product_URL_Review_ID
PRIMARY KEY (Product_URL, Review_ID)
GO

/* Entity Integrity by Foreign Key */
ALTER TABLE Review
ADD CONSTRAINT FK_Review_Product_URL
FOREIGN KEY (Product_URL)
REFERENCES Products (Product_URL)
GO

ALTER TABLE Review
ADD CONSTRAINT FK_Review_Review_ID
FOREIGN KEY (Review_ID)
REFERENCES Reviewers (Review_ID)
GO

【问题讨论】:

    标签: key candidate


    【解决方案1】:

    由于您的Reviewer 表在(Reviewer_ID, Review_ID) 上有一个主键,因此任何想要引用Reviewer 的子表还必须提供相同的两列建立FK关系。

    不能仅引用主键的一部分 - 要么全有,要么全无:要么您提供 ALL 主键的列您引用的表 - 或者您无法建立 FK 关系。

    因此,在您的情况下,您需要在 Review 表中添加一个 Reviewer_ID 列,以便您可以将两个必需的列用于 FK 关系:

    ALTER TABLE dbo.Review
    ADD CONSTRAINT FK_Review_Review_ID
        FOREIGN KEY (Review_ID, Reviewer_ID) 
        REFERENCES dbo.Reviewers (Review_ID, Reviewer_ID)
    

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多