[英]MYSQL Foreign Key ON DELETE and ON UPDATE
我有一個網站,其中有一個用戶表和一個電影表。 我正在創建收藏夾表,以便用戶可以將電影保存到他們的收藏夾列表中。 這個問題與我建議使用以下收藏夾表有關:
CREATE TABLE Favorites (
user_id INT NOT NULL,
movie_id INT NOT NULL,
PRIMARY KEY (user_id, movie_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (movie_id) REFERENCES Movies(movie_id)
);
我注意到在閱讀有關外鍵時有一個'ON DELETE'和'ON UPDATE'選項,您可以在其中設置限制,級聯等。
如果用戶收藏了許多電影,然后從電影表中刪除了其中一部電影,如果將外鍵設置為“ CASCADE”會發生什么情況? 收藏夾表中的任何行也會被刪除嗎? 如果外鍵設置為“ RESTRICT”,將會發生什么?
我只是進行基本的解釋,因為我目前尚不完全了解。
...
CASCADE :從父表中刪除或更新行,並自動刪除或更新子表中匹配的行。 同時支持ON DELETE CASCADE和ON UPDATE CASCADE 。 在兩個表之間,不要定義作用於父表或子表中同一列上的幾個ON UPDATE CASCADE子句。
注意
當前,級聯的外鍵操作無法激活觸發器。
...
RESTRICT :拒絕父表的刪除或更新操作。 指定RESTRICT (或NO ACTION )與省略ON DELETE或ON UPDATE子句相同。
NO ACTION :來自標准SQL的關鍵字。 在MySQL中,等效於RESTRICT 。 如果引用表中有相關的外鍵值,則MySQL服務器會拒絕父表的刪除或更新操作。 某些數據庫系統具有延遲檢查,而“ NO ACTION”是延遲檢查。 在MySQL中,立即檢查外鍵約束,因此NO ACTION與RESTRICT相同。
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.