首页 > 解决方案 > 如何使用触发器 mysql 更新表

问题描述

我有两张桌子,t1 和 t2。我正在尝试触发,以便当 t1 获得更新时,我检查更新的内容是否为 t1.nStatus。

如果 t1.nStatus = 2,我需要为所有等于 t1.nId 的 t2.customer_Id 设置 t2.bEnabled = 1

CREATE OR REPLACE TRIGGER change AFTER UPDATE ON t1
    FOR EACH ROW
BEGIN
    IF NEW.nStatus = 2 THEN
        UPDATE t2 SET bEnabled = 1 WHERE t2.immobile_id = NEW.nId;
    END IF;
END;

我得到的错误:

执行了 1 个查询,0 个成功,1 个错误,0 个警告

查询:CREATE OR REPLACE 触发器 changeStatusImmobile 在 UPDATE 后对每行固定不动,如果 NEW.nStatus = 2 然后 UPDATE 选择...

错误代码:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 5 行的 '' 附近使用正确的语法

执行时间:0 秒传输时间:0 秒总时间:0.146 秒

你有什么想法吗?

标签: mysqltriggers

解决方案


尝试设置分隔符

DELIMITER $$

CREATE OR REPLACE TRIGGER change AFTER UPDATE ON t1
    FOR EACH ROW
BEGIN
    IF NEW.nStatus = 2 THEN
        UPDATE t2 SET bEnabled = 1 WHERE t2.immobile_id = NEW.nId;
    END IF;
END$$

DELIMITER ;

推荐阅读