如果删除了孩子,则自动删除父母

时间:2019-03-29 08:30:20

标签: mysql sql

这是我的数据库关系。

enter image description here

我得到了这样的数据:

LikeDislike
|-------------|--------------|-----------------|
|      id     |     userId   |    createdAt    |
|-------------|--------------|-----------------|
|       1     |       1      |    2019-03-26   |
|-------------|--------------|-----------------|

RoomLikes
|------------------|--------------|
|   likeDislikeId  |     roomId   | 
|------------------|--------------|
|       1          |       1      |
|------------------|--------------|

我想做:

  1. 当我从RoomLikes删除数据时,例如DELETE FROM roomlikes where id = 1
  2. LikeDislike中与RoomLikes相关的数据将被自动删除。

如果删除了孩子的数据,是否可以自动删除父母的数据?

如果需要更多信息,请告诉我。

谢谢。

3 个答案:

答案 0 :(得分:1)

如果我理解这个问题,则需要在删除语句中使用联接进行调查-像这样:

DELETE RoomLikes, LikeDislike
FROM RoomLikes
INNER JOIN LikeDislike ON RoomLikes.likeDislikeId = LikeDislike.id
WHERE roomlikes.id=1;

答案 1 :(得分:1)

您可以使用以下查询

ALTER TABLE RoomLikes在DELETE CASCADE上添加外键(likeDislikeId)引用LikeDislike(id);

请记住,您需要在引用表中拥有主键(LikeDislike)才能添加外键。通过使用此方法,如果删除父表上的数据,子表的数据将被删除。

答案 2 :(得分:1)

LikeDislike中的记录是否有1个子记录,即RoomLikeCommentLike是否正确?

在这种情况下,您可以考虑使用ON DELETE CASCADE来更改相应的外键,最重要的是,删除父记录而不是子记录。