我可以有一个使用不同表参数的触发器吗?
Can I have a trigger that uses different tables argumments?
我正在使用 MySql 制作一个简单的应用程序,我需要使用触发器。
每当有人更新特定公民状态时,我认为触发器会更新车辆 table。
我不确定触发器的语法,但我没有找到任何解释使用不同 tables 的多个参数的内容。
这是我的触发器:
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
返回 "Unknown system variable "id_person""" 错误。
我们使用 UPDATE
语句(不是 SET
子句)来更新 table(s) 中的值。我已经更改了下面的触发器(修复了所有语法错误)。但从逻辑上讲,您仍然需要准确定义您要实现的目标。
在触发器中,我们可以访问 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 ;
我正在使用 MySql 制作一个简单的应用程序,我需要使用触发器。 每当有人更新特定公民状态时,我认为触发器会更新车辆 table。
我不确定触发器的语法,但我没有找到任何解释使用不同 tables 的多个参数的内容。
这是我的触发器:
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
返回 "Unknown system variable "id_person""" 错误。
我们使用 UPDATE
语句(不是 SET
子句)来更新 table(s) 中的值。我已经更改了下面的触发器(修复了所有语法错误)。但从逻辑上讲,您仍然需要准确定义您要实现的目标。
在触发器中,我们可以访问 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 ;