为什么外键不会更新?
我在列TEMP1.aa
(temp1中的主键)中插入数据,但它不会导入到TEMP2.cc
列(TEMP2中的外键)中。为什么外键不会更新?
为什么?
我想如果在主键中插入数据它会自动插入到外键!如果这是真的,如果我们插入一个主键,外键必须更新?
外键不会更新子引用,它只能确保存储在列中的值已经存在于父表中。
但是,MySQL通过将TEMP1表中的外键约束添加ON UPDATE CASCADE
来支持级联更新。否则,您需要考虑使用触发器来制定更详细的规则/要求。
参考:
与问题相切。 UPDATE CASCADE与问题 – RichardTheKiwi 2011-03-13 20:17:18
@Richard aka cyberkiwi中的INSERT操作无关:如果插入(意思是添加新的父表数据),则不会有子引用进行更正。检查OPs问题的编辑历史,你会发现英语不是他们的母语。 – 2011-03-13 20:22:57
不,外键不喜欢这样的工作。
外键用于通过键将两个表链接在一起。在一张桌子上,您有PRIMARY KEY
以及与该实体有关的所有属性。
在其他表,你有告诉数据库的FOREIGN KEY
“嘿,你的用户,你只能在此插入一个值,如果它也存在在我的参考表一PRIMARY KEY
”。
如果您想要在您的外部表中连续排列INSERT
,您仍然可以根据自己的意愿选择。
如果需要外部表始终有一行引用其在主表的通讯员,有机会,你可能该表转换为附加列,因为它们的属性相同的实体。 这个也有例外,但详细说明会增加您的困惑。
考虑这些表
Fruits
ID Name
1 Apple
2 Orange
3 Grapes
Sales
ID Fruit Amount
1 1 2.45
2 3 1.23
3 1 2.23
4 2 6.22
上Sales(Fruit) to Fruits(ID)
外键确保了每个销售水果的值必须从水果的ID相符。不,你的问题
我在列aa(主键在temp1中)插入数据,但它不会导入到TMP2.cc列(temp2中的外键)。
因此,我们在水果(ID:4,名称:梨)中插入记录。你想把它导入销售?怎么样?
关于外键的一些基础知识
我不认为你了解外键都读了。 – BoltClock 2011-03-13 20:10:50
除非你有某种类型的触发器设置,只是因为某些东西是外键并不意味着它会自动更新。 – 2011-03-13 20:12:09