簡體   English   中英

MYSQL外鍵ON DELETE和ON UPDATE

[英]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”,將會發生什么?

我只是進行基本的解釋,因為我目前尚不完全了解。

13.1.17.3使用外鍵約束

...

  • CASCADE :從父表中刪除或更新行,並自動刪除或更新子表中匹配的行。 同時支持ON DELETE CASCADEON UPDATE CASCADE 在兩個表之間,不要定義作用於父表或子表中同一列上的幾個ON UPDATE CASCADE子句。

    注意

    當前,級聯的外鍵操作無法激活觸發器。

...

  • RESTRICT :拒絕父表的刪除或更新操作。 指定RESTRICT (或NO ACTION )與省略ON DELETEON UPDATE子句相同。

  • NO ACTION :來自標准SQL的關鍵字。 在MySQL中,等效於RESTRICT 如果引用表中有相關​​的外鍵值,則MySQL服務器會拒絕父表的刪除或更新操作。 某些數據庫系統具有延遲檢查,而“ NO ACTION”是延遲檢查。 在MySQL中,立即檢查外鍵約束,因此NO ACTIONRESTRICT相同。

...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM