无法更新存储触发器中的 table,因为它已被调用此存储触发器的语句使用

Can't Update table in stored trigger, cause it's already used by statement which invoked this stored trigger

mysql 中的触发器有问题:

CREATE TRIGGER trigger1 BEFORE INSERT ON test1

FOR EACH ROW 

BEGIN 

    **update test1 set  p=new.p where idtest=new.idtest;**

UPDATE kompo set kompo.s=kompo.s -1 where idk = new.idk;

IF (SELECT s - mini FROM kompo WHERE idk = NEW.idk) < 0
THEN 
UPDATE test2 SET kk=kk+1 WHERE idk=NEW.idk;    

END IF;
END$$

粗体命令导致错误:无法在存储的触发器中更新 table,因为它已被调用此存储触发器的语句使用。

您知道如何更新插入的值吗?

提前谢谢你。

也许这就是您真正想要的:

BEGIN 

    set new.p = new.p * 0.9;

    update kompo
        set kompo.s = kompo.s - 1
        where kompo.idk = new.idk;

    IF (SELECT s - mini FROM kompo WHERE kompo.idk = NEW.idk) < 0 THEN 
        UPDATE test2
            SET kk = kk+1
            WHERE test2.idk = NEW.idk;    

    END IF;
END;

如果您打算让第一个更新影响 table 中的多个行,那么您的数据模型有问题。