Это моя база данных отношений.
Я получил такие данные:
LikeDislike
|-------------|--------------|-----------------|
| id | userId | createdAt |
|-------------|--------------|-----------------|
| 1 | 1 | 2019-03-26 |
|-------------|--------------|-----------------|
RoomLikes
|------------------|--------------|
| likeDislikeId | roomId |
|------------------|--------------|
| 1 | 1 |
|------------------|--------------|
Я хочу делать:
RoomLikes
, например DELETE FROM roomlikes where id = 1
LikeDislike
, относящиеся к RoomLikes
будут удалены автоматически.Есть ли способы автоматического удаления данных родителя, если данные ребенка были удалены?
Пожалуйста, дайте мне знать, если вам нужно больше информации.
Благодарю.
Если я понимаю вопрос, который вы должны рассмотреть, используя объединение в вашем утверждении удаления - что-то вроде этого:
DELETE RoomLikes, LikeDislike
FROM RoomLikes
INNER JOIN LikeDislike ON RoomLikes.likeDislikeId = LikeDislike.id
WHERE roomlikes.id=1;
LikeDislike
ли, что запись в LikeDislike
имеет ровно 1 LikeDislike
запись, которая является RoomLike
или CommentLike
?
В этом случае вы можете рассмотреть возможность изменения соответствующих внешних ключей с помощью ON DELETE CASCADE
и, прежде всего, удалить родительскую запись вместо дочерней записи.
Вы можете использовать следующие запросы
ALTER TABLE RoomLikes добавить ссылки внешнего ключа (likeDislikeId) LikeDislike (id) ON DELETE CASCADE;
Просто помните, что вам нужно иметь первичный ключ в ссылочной таблице (LikeDislike), чтобы добавить внешний ключ. При использовании этого, если вы удалите данные из родительской таблицы, данные дочерней таблицы будут удалены.
CommentLikes
? Похоже, у них есть внешний ключ кLikeDislike
Не боитесь ли вы, что записи становятся бесхозными при удалении элемента изLikeDislike
?