我在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] 删除。
我来说两句