[Err] 1442 - Can't update table 'test_trigger' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. DROP TABLE IF EXISTS `test_trigger`; CREATE TABLE `test_trigger` ( `id` ) NOT NULL AUTO_INCR…
MySQL: Solution for ERROR 1442 (HY000): Can't update table 'xxx' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. 今天在做触发器时发生了这个错误 原因是在对某表操作时同时触发对该表插入 估计这在mysql不允许的 不可以把触发条件和触发动作归于一表…
看到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');$ E…
如果你在触发器里面对刚刚插入的数据进行了 insert/update, 则出现这个问题.因为会造成循环的调用. create trigger test before update on test for each row update test set NEW.updateTime = NOW() where id=NEW.ID; END 应该使用set操作,而不是在触发器里使用 update,比如 create trigger test before update on test for ea…
MySql Error: Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger I am running a MySQL Query. But when a new row is added from form input I get this error: Error:Can't update…
MySQL触发器更新本表数据异常:Can't update table 'tbl' in stored function/trigger because it 博客分类: 数据库 MySQLJava 如果你在触发器里面对刚刚插入的数据进行了 insert/update, 则出现这个问题.因为会造成循环的调用. Java代码 收藏代码 create trigger test before update on tablename for each row update tablename set N…
Table1 id Name 1 xxx 2 ooo Table2 Table1Id Table1Name Column1 Column2 Column3 1 sss xxxx xxxx xxxx 2 ddd xxxx xxxx xxxx 2 ddd xxxx xxxx xxxx 更新Table1的Name到Table2 /* * Update t2 * Set t2.Table1Name = t1.Name * From Table2 t2 * Join Table1 t1 on t1.Id…
如果你点进了这篇帖子,那么你一定遇到了跟我一样的问题.别看题目的set case when...,我一开始也是第一反应是用case when但是发现并不好使. 问题呢,说得高大上一点:动态指定要修改的字段. 其实小白在这里并没找到我以为的解决方法[笑哭],但是好歹问题是解决了. 这里是原帖的地址: http://stackoverflow.com/questions/4830191/t-sql-using-a-case-in-an-update-statement-to-update-certa…
首先,测试版本 Mysql 5.6. 然后再看触发器的语法 CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body trigger_time: { BEFORE | AFTER } trigger_event: { INSERT | UPDATE | DELETE } 这个是联机文档里面查到的资料…
在数据库的触发器中经常会用到更新前的值和更新后的值,所有要理解new和old的作用很重要.当时我有个情况是这样的:我要插入一行数据,在行要去其他表中获得一个单价,然后和这行的数据进行相乘的到总金额,将该行的金额替换成相乘的结果. 一开始我使用的after,然后对自身的值进行更改.   insert update delete old null 实际值 实际值 new 实际值 实际值 null 在Oracle中用:old和:new表示执行前的行,和执行后的行.在MySQL中用old和new表示执行…