如题:mysql更新触发器先插入另一张表然后删除该条数据

droptriggerifexiststrigger_tb_carparkinoutrecord_update;
CREATETRIGGERtrigger_tb_carparkinoutrecord_updateAFTERUPDATEONtb_carparkinoutrecord
FOREACHROW
BEGIN
IF@disable_triggerISNULLTHEN
IFnew.ProcessingTypenotin('未处理主记录','未处理辅记录')THEN
INSERTINTOtb_carparkinoutrecord_historySELECTtemp_tb_carparkinoutrecord.*,
(CASEWHEN(isnull(b.CarOwnerName)OR(b.CarOwnerName=''))THEN'临时车'ELSEb.CarOwnerNameEND)ASCarOwnerName
,(CASEWHEN(isnull(c.GroupName)OR(c.GroupName=''))THEN''ELSEc.GroupNameEND)ASGroupName,
(SELECTGetParentGroupName(b.CarGroupGuid)ASExpr1)ASFullGroupName
FROM
(SELECT*FROMtb_carparkinoutrecordasawherea.guid=new.guid)astemp_tb_carparkinoutrecord
LEFTJOINtb_carinfoasbon((temp_tb_carparkinoutrecord.InCarNO=b.CarNo)AND(temp_tb_carparkinoutrecord.CarColor=b.CarColor))
LEFTJOINtb_cargroupascon(b.CarGroupGuid=c.guid);
IFROW_COUNT()>0THEN
DELETEFROMtb_carparkinoutrecordWHEREguid=new.guid;
ENDIF;
ENDIF;
SET@disable_trigger=NULL;
ENDIF;
END

删除数据时会报错,报错内容:Can'tupdatetable'tb_carparkinoutrecord'instoredfunction/triggerbecauseitisalreadyusedbystatementwhichinvokedthisstoredfunction/trigger
请问这个应该怎么处理,我把删除语句放在tb_carparkinoutrecord_history表的插入触发器中也不行。在线等。。

4 个解决方案

#1


如果你在触发器里面对刚刚插入的数据进行了insert/update,则出现这个问题。因为会造成循环的调用.
可以另外创建过程完成需求

更多相关文章

  1. oracle基础知识总结 part 3 : 三范式,PLSQL,存储过程,函数,触发器
  2. PHP mysql_fetch_array得不到数据
  3. SQL SERVER 2005 数据库对比工具,并自动生成更新SQL脚本
  4. Python自动化拉取Mysql数据并装载到Oracle
  5. 如何将A表查出来的数据放到B表中
  6. C# 往SQL数据库插入listbox的值
  7. C#使用SqlBulkCopy将DataTable写入数据库的表中(表不存在则创建新
  8. 高分求解:如何每天将本地的sybase的数据导入到internet上的sql se
  9. MySQL数据库阶段学习目录

随机推荐

  1. Linux 驱动面试题总结
  2. Linux命令之find(一)
  3. 从Android应用访问Chromebook的localhost
  4. MeeGo定位跨4大平台OS Novell主攻平板电
  5. linux下安装nginx,支持rewrite、ssl
  6. 在linux 列出 超级用户 普通用户和 系统
  7. Ubuntu 14.04 LTS 使用sudo免输密码
  8. 为SWIG指定Python头和库。
  9. 如何在qt上访问父窗口小部件?
  10. Linux 常用命令汇总--加了注释