我可以有一个使用不同表参数的触发器吗?

wribegjk  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(482)

我正在用mysql做一个简单的应用程序,我需要使用触发器。触发器,我认为会更新车辆表,每次一个人更新了一个特定的公民国家。
我不确定触发器的语法,但是我没有找到任何解释从不同的表中使用多个参数的方法。
这是我的扳机:

CREATE TRIGGER tr_widow AFTER UPDATE
ON person
FOR EACH ROW
SET v.id_person = p.id_spouse 
FROM person p 
JOIN person p2 ON p.id_spouse = p2.id_person 
JOIN vehicle v ON v.id_person = p.id_person 
WHERE p2.civil_state = 5

它返回“未知系统变量”id\u person“”错误。

emeijp43

emeijp431#

我们使用 UPDATE 声明(非 SET 子句)更新表中的值。我已经更改了下面的触发器(修复了所有语法错误)。但从逻辑上讲,你仍然需要准确地定义你想要达到的目标。
在触发器中,我们可以访问 NEW 以及 OLD 价值实现我们的逻辑。

DELIMITER $$  -- Define the Delimiter to something else other than ;
CREATE TRIGGER tr_widow AFTER UPDATE
ON person
FOR EACH ROW

  BEGIN  -- Trigger statement body starts with BEGIN clause

    UPDATE vehicle v 
    JOIN person p ON v.id_person = p.id_person 
    JOIN pessoa p2 ON p.id_spouse = p2.id_person 
    SET v.id_person = p.id_spouse 
    WHERE p2.civil_state = 5;

  END $$  -- END the Trigger statement
DELIMITER ;  -- redefine the Delimiter to ;

相关问题