创建一个在另一个表上执行更新的触发器

时间:2016-12-11 15:43:43

标签: mysql sql database triggers

我有两个表 - 一个称为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 ;

1 个答案:

答案 0 :(得分:1)

<=> operator是一个空安全等于运算符,但根据描述,您需要“不等于”运算符。在这里,具体来说,如果您只想检查它是否从null变为非空值(反之亦然),您可以使用逻辑xor operator

IF (NEW.dateReturned IS NULL) XOR (OLD.dateReturned IS NULL) THEN