MySQL 列更新与触发器

标签 mysql database triggers

我的预订表包含 RESERVATION_ID 、 ROOM_NUM、Date_Start 、 Date_End 和费用列。我想要做的是插入除成本之外的所有列并自动填充成本。

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 ;

我编写了这个触发器来执行此操作,但是每当我按Apply插入所有内容时,RESERVATION_COST列中都不会插入任何内容。

为什么?

最佳答案

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

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

关于MySQL 列更新与触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30845258/

相关文章:

mysql - 无法从触发器内的 SELECT 查询获取值

如果记录存在,mySQL 用户定义函数

database - 如何在H2数据库中查看我的表列是否为外键

mysql - 为地址更改+定价创建正确的数据库表结构

java - Hibernate 中的 Longvarchar

MySQL:我可以在 BEFORE UPDATE 触发器中停止 UPDATE 查询吗?

sql - 创建一个触发器,它将在更新另一个表时将记录插入表中

MySQL 游标错误 1193 : Unknown system variable

php - 为什么 ORDER BY id DESC 在此行不起作用?

sql - 在内部使用 OUTPUT/INTO 而不是插入触发器会使 'inserted' 表无效