【问题标题】:Foreign Key Constraints may cause cycles or multiple cascade paths [duplicate]外键约束可能导致循环或多个级联路径[重复]
【发布时间】:2012-09-21 23:09:19
【问题描述】:

可能重复:
Foreign key constraint may cause cycles or multiple cascade paths?

创建下表时出现以下错误。

消息 1785,第 16 级,状态 0,第 1 行 在表“Faculty”上引入 FOREIGN KEY 约束“FKFacSupervisor”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。 消息 1750,第 16 级,状态 0,第 1 行 无法创建约束。查看以前的错误。

CREATE TABLE Faculty
(
    FacNo               CHAR (11),
    FacFirstName        VARCHAR (50)CONSTRAINT FacFirstNameRequired NOT NULL,
    FacLastName         VARCHAR (50) CONSTRAINT FacLastNameRequired NOT NULL,
    FacCity             VARCHAR (50) CONSTRAINT FacCityRequired NOT NULL,
    FacState            CHAR (2) CONSTRAINT FacStateRequired NOT NULL,
    FacZipCode          CHAR (10) CONSTRAINT FacZipCodeRequired NOT NULL,
    FacHireDate         DATE,
    FacDept             CHAR (6),
    FacRank             CHAR (4),
    FacSalary           DECIMAL (10,2),
    FacSupervisor       CHAR (11), 
CONSTRAINT PKFaculty PRIMARY KEY (FacNo),
CONSTRAINT FKFacSupervisor FOREIGN KEY (FacSupervisor) REFERENCES Faculty
    ON DELETE SET NULL
    ON UPDATE CASCADE
)

【问题讨论】:

标签: foreign-keys cascade multiple-tables


【解决方案1】:

消息告诉您无法创建外键约束 FKFacSupervisor,因为此约束可能导致循环或多个级联路径。这意味着约束可能导致对一行的更新或删除可能导致对另一行的更新或删除,这反过来又可能导致对第一行的更新或删除。该消息还解释了可能的解决方案:指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他约束。只有了解架构和预期的使用模式,您才能决定哪些选项是最好的。

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2015-05-22
    • 1970-01-01
    • 2018-12-19
    • 2016-03-26
    相关资源
    最近更新 更多