2012-10-30 70 views
0

如果我有兩個表tableinfo和tablenamelist和外鍵,像這樣:小白關於更新QN級聯

Alter tableinfo add foreign key (name) references tablenamelist(name) on update cascade; 

在哪些情況下會記錄進行修改?

我的理解是,如果我在tablenamelist中將'bob'更改爲'Bobby',它將在tableinfo中將'bob'的所有實例更新爲'Bobby'。 如果我在tableinfo表中更改名稱,會發生什麼情況?如果我將記錄從'bob'更改爲'tim',它是否會更改tableinfo中的記錄?或者只是將該記錄重新分配給新名稱?

+0

noob ?? :)問題的問題? – DarthVader

+0

它不會讓我在標題中使用「問題」一詞發佈問題 –

回答

1

您的第一個假設是正確的,如果您在tablenamelist中更改名稱,它將在表tableinfo中更改。

您的第二個假設不正確,如果您嘗試將表tableinfo中的名稱更改爲表tablenamelist中不存在的內容,您將收到外鍵違例。

外鍵是強制外鍵表中的鍵的存在的約束。

Foreign key

在關係數據庫中的情況下,外鍵是兩個表之間的引用 約束。

14.3.5.4. FOREIGN KEY Constraints

InnoDB的

而且拒絕任何試圖在子表中創建 外鍵值,如果沒有父表匹配的 候選鍵值的INSERT或UPDATE操作。