【发布时间】:2014-12-25 13:59:34
【问题描述】:
我在 phpMyAdmin 中使用 Mysql,如果我插入具有相同主键的行,我必须从 tableA 中删除一个条目。我想在插入之前在 tableA 的触发器中执行它 例如, 如果 tableA 包含
1 Hai Hello
这里 1 是主键
现在如果我插入一行 1 Bye Hello 然后触发器 BEFORE INSERT 将删除旧条目,然后插入新行(第 2 行)。但是 Mysql 的限制是不能更新为同一个表定义的触发器内的表。
它给出了错误
#1442 - 无法更新存储的表 'tableA' 函数/触发器,因为它已被调用的语句使用 这个存储的函数/触发器。
所以我改变了我的方式,我在插入 tableA 之前从触发器中调用了一个过程,并且在那个过程中我完成了我认为在触发器中要做的任务。但不幸的是,我遇到了同样的错误。 在插入之前的触发器中,我简单地将过程称为
CALL proce1(new.Reg_No);
在程序中我已经这样做了
DECLARE toup integer;
select count(*) into toup from tableA where Reg_No=reg;/*Here Reg_No is primary key */
if toup > 0 then
delete from tableA where Reg_No=reg;
end if;
需要一些其他的想法来实现这一点。帮帮我.....
【问题讨论】:
-
你为什么要删除?您是要替换旧数据还是真的删除记录?
-
@Mike 我想删除旧记录并插入新记录。我只是从 .csv 文件中插入新值,旧值无法更新,所以我想在插入之前删除它
标签: mysql sql stored-procedures triggers phpmyadmin