在使用mysql中的trigger将新记录插入表中之前删除记录

时间:2015-01-18 10:46:40

标签: mysql sql

我创建了一个表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'在存储函数/触发器中,因为它已被调用此存储函数/触发器的语句使用。 谁能帮忙。 提前谢谢

2 个答案:

答案 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语句