如何从 PHP 中的多对多关系表中删除
How to DELETE from Many to Many Realationship tables in PHP
这是我的table样子
Table : 电影
# Name Type
1 movie_id Pk int(11)
2 movie_name text
Table:流派
# Name Type
1 genre_id Pk int(11)
2 genres_name text
Table : movie_genres
# Name Type
1 id Pk int(11)
2 movie_id Index int(11)
3 genres_id Index int(11)
那么我怎样才能删除电影中的一行,以便它在类型和 movie_genres 中的值也自动删除。
当我尝试从 phpmyadmin 中删除行时显示错误:#1451 - 无法删除或更新父行:外键约束失败(123movies
.movie_actors
,CONSTRAINT movie_actors_ibfk_1
外键 (movie_id
) 引用 movies
(movie_id
))
请帮帮我!如何以正确的方式做到这一点! (在 PHP)
首先,您不应该从类型 table 中删除记录,因为这些值已经或将用于其他电影。
你得到的错误是因为你有另一个table一对多(movie_actors)用外键来防止删除电影记录,你必须删除电影table 中的演员最先能够删除电影
解决方案 :
将 movie_actor table 上的外键约束更改为 delete/update 上的级联(现在是限制)
将流派 table 的 Foriegn 键添加到电影删除时的级联:
ALTER TABLE movie_genres
ADD CONSTRAINT FK_movgen
FOREIGN KEY (`movie_id`) REFERENCES `movies` (`movie_id`) ON DELETE CASCADE ON UPDATE CASCADE;
这是我的table样子
Table : 电影
# Name Type
1 movie_id Pk int(11)
2 movie_name text
Table:流派
# Name Type
1 genre_id Pk int(11)
2 genres_name text
Table : movie_genres
# Name Type
1 id Pk int(11)
2 movie_id Index int(11)
3 genres_id Index int(11)
那么我怎样才能删除电影中的一行,以便它在类型和 movie_genres 中的值也自动删除。
当我尝试从 phpmyadmin 中删除行时显示错误:#1451 - 无法删除或更新父行:外键约束失败(123movies
.movie_actors
,CONSTRAINT movie_actors_ibfk_1
外键 (movie_id
) 引用 movies
(movie_id
))
请帮帮我!如何以正确的方式做到这一点! (在 PHP)
首先,您不应该从类型 table 中删除记录,因为这些值已经或将用于其他电影。
你得到的错误是因为你有另一个table一对多(movie_actors)用外键来防止删除电影记录,你必须删除电影table 中的演员最先能够删除电影 解决方案 : 将 movie_actor table 上的外键约束更改为 delete/update 上的级联(现在是限制)
将流派 table 的 Foriegn 键添加到电影删除时的级联:
ALTER TABLE movie_genres
ADD CONSTRAINT FK_movgen
FOREIGN KEY (`movie_id`) REFERENCES `movies` (`movie_id`) ON DELETE CASCADE ON UPDATE CASCADE;