带有触发器的MySQL列更新

时间:2015-06-15 12:31:45

标签: mysql database triggers

我的预订表格为RESERVATION_ID , ROOM_NUM, Date_Start , Date_End and cost columns。我想要做的是插入除成本之外的所有列并自动填充成本。

delimiter //
CREATE TRIGGER upd_check before INSERT ON reservation
    FOR EACH ROW
    BEGIN
        IF NEW.RESERVATION_COST = NULL THEN
            SET NEW.RESERVATION_COST = 'timestampdiff(day, NEW.RESERVATION_STARTD, NEW.RESERVATION_ENDD)*70';
        END IF;
    END;//
delimiter ;

我写了这个trigger来做这件事,但每当我按下Apply以插入所有内容时,都不会向RESERVATION_COST列插入任何内容。

为什么?

2 个答案:

答案 0 :(得分:0)

如果我有足够的声誉,我会把它放在评论中,但无论如何。触发器不能在激活它们的同一个表上操作。似乎有限制,但我们遇到了同样的问题。

此链接没有明确说明这一点,但确实说“在关联的表格中”。不一样:https://dev.mysql.com/doc/refman/5.0/en/triggers.html

答案 1 :(得分:0)

您无法将值与NULL进行比较,您需要检查它是否为IS NULL

e.g。

 IF NEW.RESERVATION_COST IS NULL THEN