我正试图在数据库中创建一个简单的触发器功能,以便在更新另一个表时更改其中一个表中的值。
我有一个过于简化的库数据库,有问题的表是boakloanbookcopy
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/

10-11 01:40