MySQL - 将表 1 中每个更新的行插入表 2

标签 mysql sql triggers

我有一个如下所示的 table_1:

serial  myBool   dateTime
------  ------   --------
1       0        2016-05-03 10:23:45
2       1        2016-05-03 09:13:21
3       0        2016-05-03 08:44:33

MySQL 计划事件定期运行,如果 dateTime 足够旧,它会将 myBool 设置为 0。到目前为止一切顺利。 每次 myBool 设置为 0 时,我希望向 table_2 添加一个新行,如下所示:

table_1_serial   dateTime
--------------   --------
2                2016-05-03 09:13:21

我因此创建了一个触发器:

CREATE TRIGGER `myTrigger` AFTER UPDATE ON `table_1`
FOR EACH ROW 
    IF myBool = 0 THEN INSERT INTO `table_2` VALUES(`serial`, `dateTime`); 
END IF

但是现在当我修改 table_1 行时,我收到以下消息:

Unknown column 'myBool' in 'field list'

如果您能帮助我让触发器正常工作,我将不胜感激,谢谢!

最佳答案

尝试使用 new. 作为列引用:

CREATE TRIGGER `myTrigger` AFTER UPDATE ON `table_1`
FOR EACH ROW 
    IF new.myBool = 0 THEN
        INSERT INTO `table_2`
            VALUES(new.`serial`, new.`dateTime`); 
    END IF;

关于MySQL - 将表 1 中每个更新的行插入表 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993980/

相关文章:

php - 在MySQL查询中查找不同词序的字符串

mysql - Silverstripe LeftJoin WHERE 两个值

php - 使用按钮 (CakePHP) 从另一个模型添加连接

sql - 通过更改几个列值将行复制到同一个表

sql - oracle - to_Date 格式

mysql - 在 MySQL 中将表转换为文本文件并附加进一步的更改

Postgresql,如果存在具有某些唯一值的行则更新,否则插入

mysql - IF on WHERE 子句

mysql - 如何在表中的任何更改上创建触发器

sql - 触发 Oracle 运算符 LIKE 以遵守字符串格式