我在列TEMP1.aa
(temp1中的主鍵)中插入數據,但它不會導入到TEMP2.cc
列(TEMP2中的外鍵)中。爲什麼外鍵不會更新?
爲什麼?
我想如果在主鍵中插入數據它會自動插入到外鍵!如果這是真的,如果我們插入一個主鍵,外鍵必須更新?
我在列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