何時使用“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)商。請說清楚。
何時使用“ON UPDATE CASCADE”
慕工程0101907
2019-08-23 16:02:25