我有三个表A,B,C。
A表中有一个状态字段status,初始值是0
B表中插入数据后,A.status=2
然后我需要在A.status=2时执行一个存储过程往C表中插入数据。
插入完成后,需要改A.status=6。我原来是通过在A表中加个触发器来做的。但是最后一步A.status=6无法实现,因为触发器限制了,不允许操作本表。问下大家有没有什么其他合适的解决方案,能实现我的需求。触发器 

解决方案 »

  1.   

    修改后提示:
    [Err] 1362 - Updating of NEW row is not allowed in after trigger
      

  2.   

    我的触发器语句CREATE TRIGGER t_InventoryAsset AFTER UPDATE ON itsm_asset_inventory FOR EACH ROW 
    BEGIN
    IF(new.status = 2) THEN
    CALL sp_harddisk_asset_inventory(new.inventory_id);
    SET new.status = 6;
    END IF;
    END
      

  3.   

    点引用用点成板砖了。对不起。如果我改成BEFORE,那么在存储过程执行的过程中,假如出错了,这个UPDATE语句还执行吗?
    如果执行的话,这个UPDATE语句中的状态值是2还是6?
    因为我是希望C表写入完成后,再改状态是6.
    如果出错了,我希望状态还是2,不要改成6.
      

  4.   

    假如出错了:结果有误还是其它?
    如果SP有误,在SP中判断结果,如有问题,执行1个错误的SQL语句
    自行测试一下