我有两个表 - 一个名为 bookloan
,另一个名为 bookcopy
。在 bookloan
表中,我有一个名为 dateReturned
的 datetime
字段,默认情况下为 null
并且仅在书被归还。
在另一个表 (bookcopy
) 中,我有一个字段可用,当一本书被拿走时,该字段的值更改为 0
。现在我想在还书时将它改回 1
(当我的 datetime
字段不再是 null
并且已更新时)。
我的问题是我为此目的编写的代码(在下面发布)由于某种原因无法正常工作。
P.S 我没有收到任何错误。
USE `libdb`;
DELIMITER $$
DROP TRIGGER IF EXISTS libdb.bookloan_BEFORE_UPDATE$$
USE `libdb`$$
CREATE DEFINER=`root`@`localhost` TRIGGER `libdb`.`bookloan_BEFORE_UPDATE`
BEFORE UPDATE ON `bookloan`
FOR EACH ROW
BEGIN
IF NEW.dateReturned <=> OLD.dateReturned THEN
UPDATE bookcopy
SET isAvailable = 1
WHERE bookcopy.idBookCopy = NEW.BookCopy_idBookCopyFK;
END IF;
END$$
DELIMITER ;
最佳答案
<=>
operator是一个 null 安全的 equals 运算符,尽管根据描述您需要“不等于”运算符。在这里,具体来说,如果您只想检查它是否从 null 变为非 null 值(反之亦然),您可以使用逻辑 xor
operator :
IF (NEW.dateReturned IS NULL) XOR (OLD.dateReturned IS NULL) THEN
关于mysql - 创建一个对另一个表执行更新的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087940/