如果条目在表中,我想更新金额,否则插入一个新条目。
delimiter $$
CREATE TRIGGER t
BEFORE INSERT
ON PARTS
for each row
BEGIN
if exists (SELECT Part_name FROM PARTS where part_name = new.part_name) then
UPDATE PARTS SET amount=amount+NEW.amount WHERE
Part_name=NEW.Part_name;
end if;
END $$
delimiter ;
当我尝试时:
mysql> insert into PARTS(Part_name,amount,Storage_ID) values('barley',1000,1);
然后我得到一个错误:
错误1442(hy000):无法更新存储函数/触发器中的表“parts”,因为调用此存储函数/触发器的语句已使用它。
什么是我的错?你知道吗?
1条答案
按热度按时间pkwftd7m1#
你不需要扳机。你想要什么
insert on duplicate key update
:为此,您需要一个唯一的索引或主键
parts(part_name)
. 或者在parts(part_name, storage_id)
. 目前尚不清楚这种情况如何适应。