第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

何時使用“ON UPDATE CASCADE”

何時使用“ON UPDATE CASCADE”

慕工程0101907 2019-08-23 16:02:25
何時使用“ON UPDATE CASCADE”我經(jīng)常使用“ON DELETE CASCADE”,但我從不使用“ON UPDATE CASCADE”,因為我不太確定在什么情況下它會有用。為了便于討論,請看一些代碼。CREATE TABLE parent (     id INT NOT NULL AUTO_INCREMENT,     PRIMARY KEY (id));CREATE TABLE child (     id INT NOT NULL AUTO_INCREMENT, parent_id INT,     INDEX par_ind (parent_id),     FOREIGN KEY (parent_id)         REFERENCES parent(id)         ON DELETE CASCADE);對于“ON DELETE CASCADE”,如果id刪除了具有a的父級,parent_id = parent.id則將自動刪除子級中的記錄。這應(yīng)該沒問題。這意味著當(dāng)id更新父級時,“ON UPDATE CASCADE”會做同樣的事情嗎?如果(1)為真,則意味著如果parent.id不可更新(或永遠不會更新),則不需要使用“ON UPDATE CASCADE”,就像它是AUTO_INCREMENT或者總是設(shè)置為TIMESTAMP。是對的嗎?如果(2)不成立,在其他什么情況下我們應(yīng)該使用“ON UPDATE CASCADE”?如果我(由于某種原因)更新了child.parent_id不存在的內(nèi)容,它會被自動刪除嗎?好吧,我知道,上面的一些問題可以通過程序測試來理解,但我也想知道這是否依賴于數(shù)據(jù)庫供應(yīng)商。請說清楚。
查看完整描述

3 回答

?
慕容森

TA貢獻1853條經(jīng)驗 獲得超18個贊

確實,如果您的主鍵只是一個自動遞增的標(biāo)識值,那么您將無法真正使用ON UPDATE CASCADE。

但是,假設(shè)您的主鍵是10位UPC條形碼,并且由于擴展,您需要將其更改為13位UPC條形碼。在這種情況下,ON UPDATE CASCADE將允許您更改主鍵值,并且具有該值的外鍵引用的任何表將相應(yīng)地更改。

在引用#4時,如果將子ID更改為父表中不存在的內(nèi)容(并且您具有引用完整性),則應(yīng)該獲得外鍵錯誤。


查看完整回答
反對 回復(fù) 2019-08-23
?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

  1. 是的,這意味著,例如,如果你做UPDATE parent SET id = 20 WHERE id = 10所有孩子,parent_id的10也將更新為20

  2. 如果不更新外鍵引用的字段,則不需要此設(shè)置

  3. 想不出任何其他用途。

  4. 您不能這樣做,因為外鍵約束會失敗。


查看完整回答
反對 回復(fù) 2019-08-23
  • 3 回答
  • 0 關(guān)注
  • 1330 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號