我有两个表 - 一个称为bookloan
,另一个称为bookcopy
。在bookloan
表中,我有datetime
字段dateReturned
,默认为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 ;
答案 0 :(得分:1)
<=>
operator是一个空安全等于运算符,但根据描述,您需要“不等于”运算符。在这里,具体来说,如果您只想检查它是否从null变为非空值(反之亦然),您可以使用逻辑xor
operator:
IF (NEW.dateReturned IS NULL) XOR (OLD.dateReturned IS NULL) THEN