外键表更新

时间:2014-06-18 05:04:19

标签: mysql sql sql-server constraints

我刚刚开始学习SQL,所以我有点困惑。

如果我有一个具有主键的表A:CustomerID&表B具有外键CustomerID

我使用CASCADE添加了外键约束,以便在删除或更新主键时自动更新或删除外键。

但是,它仅适用于删除。当我在主字段表中添加新记录时,该记录未显示在外键表中,为什么会这样?

2 个答案:

答案 0 :(得分:1)

  

在引用表中更新或删除相应的行   在父表中更新或删除该行时。级联   如果时间戳列是其中一部分,则无法指定   外键或引用的键。 ON DELETE CASCADE不能   为具有INSTEAD OF DELETE触发器的表指定。 ON UPDATE   无法为具有INSTEAD OF UPDATE的表指定CASCADE   触发器。

正如MSDN中提到的那样。他们提到主键表的唯一更新和删除操作会影响外键表的列。如果对主键进行任何插入,则不会影响外键。由于主键和外键关系的主要目标

“每个记录在外键表中都可用,它应该包含相应的记录,应该存在于primay密钥表中,反之亦然”。

如果向外键表插入任何记录,则会引发外部参照完整性错误。除非您在主键表中对应记录,否则它不允许您在外表中插入记录。

有关信息,请参阅以下MSDN链接

http://msdn.microsoft.com/en-us/library/ms179610.aspx

注意:

如果您想要实现此功能,那么您已在存储过程或触发器中编写逻辑。

答案 1 :(得分:0)

不,不是自动添加你的外键表,它没有意义,例如,如果你有两个表," City"和"人们" ,城市中的人,所以必须有FK推荐人,如果你在城市添加记录,例如纽约,数据库如何知道谁需要插入People表?有多少人? ,这个人的属性是什么?例如人名?

因此,数据库无法自动执行此操作,您必须手动执行此操作!