外键约束可能导致循环或多个级联路径[重复]
Posted
技术标签:
【中文标题】外键约束可能导致循环或多个级联路径[重复]【英文标题】: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
)
【问题讨论】:
关于 SO 还有其他非常相似的问题。搜索“循环或多级联路径”***.com/questions/851625/… 【参考方案1】:消息告诉您无法创建外键约束 FKFacSupervisor,因为此约束可能导致循环或多个级联路径。这意味着约束可能导致对一行的更新或删除可能导致对另一行的更新或删除,这反过来又可能导致对第一行的更新或删除。该消息还解释了可能的解决方案:指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他约束。只有了解架构和预期的使用模式,您才能决定哪些选项是最好的。
【讨论】:
以上是关于外键约束可能导致循环或多个级联路径[重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 引入 FOREIGN KEY 约束可能导致循环或多个级联路径
ASP.Net MVC 3 EF“在表上引入 FOREIGN KEY 约束可能会导致循环或多个级联路径”
引入 FOREIGN KEY 约束可能会导致循环或多个级联路径 - 为啥?
错误:引入FOREIGN KEY约束可能会导致循环或多个级联路径
Entity Framework Core 5 - 在表上引入 FOREIGN KEY 约束可能会导致循环或多个级联路径