Триггеры ошибок MySQL
Почему я получаю ошибку?
" #1451 - Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено (book_rating
,comments
, ОГРАНИЧЕНИЕ comments_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (book_id
) РЕКОМЕНДАЦИИ books
(id
)) "
это мой триггерный код:
BEGIN
DELETE FROM books
WHERE
books.authors_id=authors.id
AND
books.publisher_id=publisher.id
AND
rating.id_user=users_info.username
And
comments.id_user=users_info.username
AND
reply.id_user=users_info.username
AND
books.publisher_id=publisher.id
AND
comments.id=reply.id_comment
AND
books.id=rating.id_book
AND
books.id_user=users_info.username
AND
books.id=photo.id_book
AND
comments.book_id=books.id
END
comments constraint :
ALTER TABLE comments
ДОБАВИТЬ ОГРАНИЧЕНИЕ comments_ibfk_1
ИНОСТРАННЫЙ КЛЮЧ (book_id
) РЕКОМЕНДАЦИИ books
(id
), ДОБАВЬТЕ ОГРАНИЧЕНИЕ comments_ibfk_2
ИНОСТРАННЫЙ КЛЮЧ (id_user
) РЕКОМЕНДАЦИИ users_info
(username
); COMMIT;
Модель базы данных: введите описание изображения здесь
1 ответ
Без схемы или чего-то еще, похоже, вы пытаетесь удалить запись в таблицах книг, ключ которой используется в качестве внешнего ключа в таблице комментариев. Ограничение внешнего ключа ДОЛЖНО иметь совпадение в таблице книг.
Можете ли вы предоставить схему базы данных и, возможно, пример того, что вы пытаетесь удалить из какой таблицы?
пример будет
DELETE FROM books INNER JOIN comments on books.id = comments.book_id
WHERE books.id = 24
это приведет к удалению всех данных из обеих таблиц, где идентификатор книги был 24.
вы, кажется, используете предложение WHERE в качестве объединений, но у вас нет "критериев выбора"