Триггеры ошибок 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 в качестве объединений, но у вас нет "критериев выбора"

Другие вопросы по тегам