这是我的数据库关系。
我得到了这样的数据:
LikeDislike
|-------------|--------------|-----------------|
| id | userId | createdAt |
|-------------|--------------|-----------------|
| 1 | 1 | 2019-03-26 |
|-------------|--------------|-----------------|
RoomLikes
|------------------|--------------|
| likeDislikeId | roomId |
|------------------|--------------|
| 1 | 1 |
|------------------|--------------|
我想做:
RoomLikes
删除数据时,例如DELETE FROM roomlikes where id = 1
LikeDislike
中与RoomLikes
相关的数据将被自动删除。 如果删除了孩子的数据,是否可以自动删除父母的数据?
如果需要更多信息,请告诉我。
谢谢。
答案 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个子记录,即RoomLike
或CommentLike
是否正确?
在这种情况下,您可以考虑使用ON DELETE CASCADE
来更改相应的外键,最重要的是,删除父记录而不是子记录。