我创建了一个表test1
为
CREATE TABLE test1 (id INT, 名称VARCHAR(20)) ENGINE = INNODB;
现在我希望在delete
之前inserting
来自此表的记录具有相同id的新记录(即记录已经存在相同的id,然后插入新记录)。我试过代码在下面给出。
create trigger before_insert_test1 before insert
on test1
for each row
begin
delete from test1 where id=NEW.id;
end;
但它显示错误 ERROR 1442(HY000):无法更新表格&test; test1'在存储函数/触发器中,因为它已被调用此存储函数/触发器的语句使用。 谁能帮忙。 提前谢谢
答案 0 :(得分:0)
create trigger before_insert_test1 before insert on test1
DELETE FROM test1 WHERE id=NEW.id;
end;
你不需要循环,delete语句将删除给定id的每条记录。
答案 1 :(得分:0)
我不认为您可以从您插入的同一个表中更新/删除。即使您在插入后指定,该表也会被insert语句锁定。插入事务尚未完成。
我的建议是在进行插入之前进行测试并删除记录,如果适用则使用MySQL ON DUPLICATE KEY UPDATE语句