MySQL错误代码为err[1442]的解决总结

 当触发器和存贮过程交互的调用某一个字段的时候会出现这个报错

    ﹙1﹚             工具: Navicatfor mysql

    ﹙2﹚             错误描述:

              1﹚ 在编写考试排名的数据库设计期间,数据库会出现批处理,对该用户不同计算出回答正确数和题目总数的时候,数据库用触发器直接计算出它的正确率

              2﹚ 设计完成之后报错为err[1442]

  ﹙3﹚             错误解释:
                     SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG)消息:由于它已被调用了该存储函数/触发程序的语句使用,不能在存储函数/触发程序                     中更新表'%s'。

    ﹙4﹚             解决过程

              1﹚ 删除触发器.

              2﹚ 刷新数据库

              3﹚ 重新调用存贮过程即可实现

    ﹙5﹚             详细解决说明

             1﹚ 该部分错误是调用触发器的同时存贮过程也在使用这个字段,故而出现这个错误

              2﹚ 这个存贮过程是要执行多个语句的,当第一部分执行完之后肯定会涉及到该表的改动,那么就会立即触发触发器的操作,触发器会使用该字段.但是存贮过程还没有结束,他                    也在继续执行继续使用该字段,故而产生错误

在处理中建议存贮过程实现的功能一体实现,不建议存贮过程+触发器的实现方式.容易产生该错误,并且在后续变更等方面限制会更大,性能也有所影响
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值