我正试图在数据库中创建一个简单的触发器功能,以便在更新另一个表时更改其中一个表中的值。
我有一个过于简化的库数据库,有问题的表是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'
最佳答案
出现此错误是因为在此查询中(从触发器正文中):
UPDATE bookcopy
SET bookcopy.isAvailable = 0
WHERE bookcopy.isAvailable = 1
AND bookcopy.idBookCopy = bookloan.BookCopy_idBookCopyFK;
没有定义。
用
bookloan
替换bookloan.BookCopy_idBookCopyFK
。关于mysql - 如何在工作台中正确创建触发器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41080482/