mysql - 触发器编辑mysql中的其他表

标签 mysql triggers syntax-error

我有以下触发器:

DELIMITER $$

DROP TRIGGER IF EXISTS trg_day_1_status_update$$
USE `tbl_user_status`$$
    CREATE DEFINER = CURRENT_USER TRIGGER `tbl_user_status`.`trg_day_1_status_update` AFTER INSERT ON `tbl_tf_day_1` FOR EACH ROW
    BEGIN
    UPDATE tbl_user_status
        SET NEW.roadmap_day = tbl_tf_day_1.roadmap_day,
        SET NEW.user_status = "active",
        SET NEW.latest_submit = tbl_tf_day_1.submitted_on,
        SET NEW.latest_tf_id = tbl_tf_day_1.tf_id,
        SET NEW.d0 = 1,
        SET NEW.latest_cig_intake = tbl_tf_day_1.q_id_3_ftnd,
        SET NEW.latest_cigintake_submit = tbl_tf_day_1.submitted_on
    WHERE id_user = tbl_tf_day_1.id_user LIMIT 1;
    END;
$$
DELIMITER ;

但我不断收到错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET NEW.user_status = "active",
        SET NEW.latest_submit = tbl_tf_day_1.submitted' at line 5

我尝试了很多东西,包括删除字段之前的“NEW”,更改要插入的值,甚至在插入之前触发此触发器。不知道哪里出了问题,请帮忙!

最佳答案

这里有一些问题,set只需要声明一次,set语句的方向不正确,等号(=)左边的列应该是您希望在表中设置的列要更新的列,等号 (=) 右侧的列应为您要更新的列,前面应有 NEW。限定符(但不适用于诸如“active”之类的常量,等于(=)右侧的where子句列名应该以NEW开头。我对您尝试更新的表名也有点怀疑,这似乎是与创建语句中的数据库/架构共享一个名称。

关于mysql - 触发器编辑mysql中的其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48107057/

相关文章:

php - 文档访问权限

mysql - 命令 '/bin/sh -c mysql -u wordpress -pwordpress wordpress </docker-entrypoint-initdb.d/wordpress.sql' 返回非零代码 : 1

MySQL 查询速度慢

python - MySQL 触发器到 RabbitMQ

Python子进程将变量传递给函数时语法无效

php - 查询失败 您的 SQL 语法有误

mysql - SQL/MySQL - 如何获得唯一的周数(独立于年份)?

wpf - 将 WPF 样式触发器绑定(bind)到自定义依赖项属性

vim - 在 macvim 中触发全屏模式

尝试评估表达式时 Python eval() 语法错误