Я пытаюсь создать простую функцию триггера в своей БД, поэтому я могу изменить значение в одной из моих таблиц при обновлении другого.Как правильно создать триггер в верстаке?
У меня есть база данных с упрощенной библиотекой, а в таблицах указаны boakloan
и bookcopy
. В bookloan
У меня есть внешний ключ bookcopy
, где у меня есть столбец isAvailable
. Значение defaul этого столбца равно 1 (true), и наличие новой записи в моей таблице bookloan
означает, что копия книги заимствована, и она больше не доступна, поэтому я хочу изменить значение isAvailable
на 0 (false) для этой записи.
Я попытался написать триггер для этого несколькими способами, но ничего не получилось.
Вот мой последний код:
USE `libdb`;
DELIMITER $$
DROP TRIGGER IF EXISTS libdb.bookcopy_update$$
USE `libdb`$$
CREATE DEFINER=`root`@`localhost` TRIGGER `libdb`.`bookcopy_update`
BEFORE INSERT
ON `bookloan` FOR EACH ROW
BEGIN
UPDATE bookcopy
SET bookcopy.isAvailable = 0
WHERE bookcopy.isAvailable = 1
AND bookcopy.idBookCopy = bookloan.BookCopy_idBookCopyFK;
END$$
DELIMITER ;
Может кто-то помочь сделать эту работу?
С текущей версией я получаю следующее сообщение об ошибке: ERROR 1054: 1054: Unknown column 'bookloan.BookCopy_idBookCopyFK' in 'where clause'
Спасибо за ваш комментарий. Да, я изменил эту часть в своем коде перед публикацией здесь, но это все равно не сработает. Сейчас я отредактирую вопрос. –