[英]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.