无法更新存储触发器中的表,因为调用该存储触发器的语句已使用该表

S_PL

我在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$$

加粗的命令会导致错误:无法更新存储触发器中的表,因为调用此存储触发器的语句已使用该表。

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

先感谢您。

戈登·利诺夫

也许这可以满足您的实际需求:

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;

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法更新存储函数/触发器中的表“ blad”,因为调用该存储函数/触发器的语句已使用该表

#1442-无法更新存储函数/触发器中的表“ INSURANCE”,因为调用该存储函数/触发器的语句已使用该表

MySQL错误:无法更新存储函数/触发器中的表'tbl',因为调用该存储函数/触发器的语句已使用该表

MySQL错误-无法更新存储的函数/触发器中的表'library_audit2',因为该语句已使用该表

MYSQL 更新触发器 - 无法更新存储函数/触发器中的表,因为它已被语句使用

(MySQL) 无法更新存储函数/触发器中的表“PARTS”,因为它已被调用此存储函数/触发器的语句使用

#1442-无法更新存储的函数/触发器中的表,因为它已被使用

MYSQL:无法更新存储函数/触发器中的表

无法更改表上的触发器名称,因为此触发器不属于该对象

无法更新存储的函数/触发器错误中的表“ attendance_tbl”以删除触发器

该表未按触发器和过程更新

使用存储过程中的值更新触发器中的表

如何解决错误:错误1442(HY000)无法更新存储的函数/触发器中的表“表名”?

PostgreSQL创建触发器,该触发器在表的每次插入或更新时运行一个函数

使用内部联接进行删除并触发引发错误:无法更新存储函数/触发器中的表“ table_b”

我想知道哪个表存储了事件触发器的触发器的create语句,例如

使用触发器收集表中的更新值

使用触发器和存储过程中的值将值插入表中

如何推迟PostgreSQL中表的读取,直到该表的触发器(调用Java)结束?

触发器未更新表

用于更新表的SQL触发器

MYSQL触发器更新表

删除和更新后使用触发器更新表

MySQL触发器根据插入和存储的值更新表

如何在触发器或存储过程中使用两个更新语句

从DocumentDB存储过程触发触发器

继承表中的Postgresql更新时间戳触发器

sql表触发器

使用触发器更新表的特定行