mysql 加入查询后触发
mysql trigger after query with join
我想创建一个触发器,当状态更改为 'stock' 时设置新的 org_id。
我有 2 个 tables:具有属性 org_id 的 functionalci 和具有状态的 physicaldevice。
调用触发器的更新类似于:
UPDATE functionalci f
JOIN physicaldevice d
ON f.id = d.id
SET d.status = 'stock', f.name ="XXX"
WHERE d.id = 2
当我尝试触发时:
CREATE TRIGGER trig1
AFTER UPDATE ON physicaldevice
FOR EACH ROW
BEGIN
UPDATE functionalci SET org_id=2 WHERE functionalci.id = OLD.id;
END;
我遇到此错误:mysql_errno = 1442,mysql_error = 无法更新存储的 function/trigger 中的 table 'functionalci',因为它已被使用by 调用此存储 function/trigger
的语句
有没有什么方法可以在不更改调用它的 UPDATE 的情况下执行触发器?
最后我会创建一些mysql事件来解决这个问题。类似于:
CREATE EVENT ev
ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE functionalci f
JOIN physicaldevice d
ON f.id = d.id
SET f.org_id = 2
WHERE f.org_id <> 2 AND d.status LIKE "stock"
它与触发器不同,但对我有用。
我想创建一个触发器,当状态更改为 'stock' 时设置新的 org_id。
我有 2 个 tables:具有属性 org_id 的 functionalci 和具有状态的 physicaldevice。
调用触发器的更新类似于:
UPDATE functionalci f
JOIN physicaldevice d
ON f.id = d.id
SET d.status = 'stock', f.name ="XXX"
WHERE d.id = 2
当我尝试触发时:
CREATE TRIGGER trig1
AFTER UPDATE ON physicaldevice
FOR EACH ROW
BEGIN
UPDATE functionalci SET org_id=2 WHERE functionalci.id = OLD.id;
END;
我遇到此错误:mysql_errno = 1442,mysql_error = 无法更新存储的 function/trigger 中的 table 'functionalci',因为它已被使用by 调用此存储 function/trigger
的语句有没有什么方法可以在不更改调用它的 UPDATE 的情况下执行触发器?
最后我会创建一些mysql事件来解决这个问题。类似于:
CREATE EVENT ev
ON SCHEDULE EVERY 1 MINUTE
DO
UPDATE functionalci f
JOIN physicaldevice d
ON f.id = d.id
SET f.org_id = 2
WHERE f.org_id <> 2 AND d.status LIKE "stock"
它与触发器不同,但对我有用。