zoukankan      html  css  js  c++  java
  • ERROR 1442 (HY000):because it is already used by statement which invoked this stored function/tr

    看到mysql的触发器,随手写了一个:

    mysql> create trigger t_ai_test

        -> after insert on test

        -> for each row

        -> begin

        -> update test set name='test_1';

        -> end;$

    Query OK, 0 rows affected (0.00 sec)

     

    OK  没问题!

    mysql> insert into test values(2,'test');$

    ERROR 1442 (HY000): Can't update table 'test' in stored function/trigger because it is already used by statement which invoked this stored function/trigge

    执行插入就报这个错。

    查官网是这么回答的:

    Old question, but in case anyone finds this: MySQL triggers can't manipulate the table they are assigned to. All other major DBMS support this feature so hopefully MySQL will add this support soon.

    answered Feb 22 '10 at 21:16

     

    MySQL will add this support soon”,看来我还没有等到。那好吧,找解决办法先~

    原因:MYSQL的限制触发器中不能对本表进行操作,否则没完没了的递归

    解决办法:用set

    mysql> create trigger t_ai_test

    -> after insert on test

    -> for each row

    -> begin

    -> set New.name=concat(concat(New.id,'_'),New.name);

    -> end;$

  • 相关阅读:
    Mixtile LOFT
    关于Linux系统清理/tmp/文件夹的原理
    在大型项目上,Python 是个烂语言吗
    Nginx 进程间通信
    蕤仁肉(内仁肉、泪仁肉)简单介绍
    TMS320F28335项目开发记录5_28335之CCS编程基础
    RBAC权限管理
    国内三大PT(Private Tracker)站分析
    Nginx特点
    java设计模式演示样例
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/5574835.html
Copyright © 2011-2022 走看看