【发布时间】:2019-10-20 20:46:04
【问题描述】:
我有两张桌子:T_User and T_Order
T_User
--------
ID
Name
T_Order 必须是 T_User 的外键
T_Order
--------
ID
FK_UserActionOwnerID
FK_UserActionReceiverID
然后我在我的图表上建立了两个关系,从 T_User ID 到 T_Order 中的两个 FK。我还为delete and update rules 到cascade 设置了这两种关系,因为我想如果T_User 记录将被删除,因此T_Order 中的记录应该被删除,或者T_User ID 会改变然后也在@ 中更新它987654336@ 不过我得到以下错误:
'T_User'表保存成功'T_Order'表 - 无法创建关系“FK_T_Order_T_Users1”。在表 'T_Order' 上引入 FOREIGN KEY 约束 'FK_T_Order_T_Users1' 可能 导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。可以 不创建约束或索引。查看以前的错误。
实图: click here
【问题讨论】:
-
@MartinBrown 我读到了,但老实说我不知道如何解决这个问题。就像 T_Order 有关于谁制作了 Order FK_UserActionOwnerID 的信息,但也有对谁的引用,这意味着我需要两个外键。还可以删除/更新 cascae。如果我无法从一张表到另一张表进行两次引用,该如何解决?
-
通常的方法是首先创建没有级联的 FK 约束,然后创建触发器以按照您希望的方式进行级联。
-
@MartinBrown 我上传了图表截图 - 看那里我用红线标记了我还想做什么,但它引发了我描述的错误。
-
所以你是说你不知道如何在图表设计器中创建没有级联的外键?
标签: sql-server