MySQL觸發器 重要學習資料:
http://dev.mysql.com/doc/refman/5.1/zh/triggers.html
在使用觸發器的時候,遇到一個錯誤:
[SQL]insert into tb_recharge_records(user_id,pointcoupon_added) values(214983,10); [Err] 1442 - Can't update table 'tb_recharge_records' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
通過查找資料:
http://blog.csdn.net/liuliu20036/article/details/4158891
觸發器在插入時更新此條新記錄 錯誤it is already used by statement which invoked this stored functiontrigger的解決方法
問題:
create trigger InsertUser
begin
update users
set user_power='[resource]'
where user_id=new.user_id;
end;
當觸發器執行過程中出現了錯誤:我使用的是Mysql5.0
Can't update table 'users' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
請問這里是怎么回事?
解決方法:
如果你在觸發器里面對剛剛插入的數據進行了 insert/update, 則出現這個問題。因為會造成循環的調用.
應該使用set操作,而不是在觸發器里使用 update,比如
create trigger InsertUser
begin
set new.user_power='[resource]'
end;
另外這里必須在插入之前來執行該觸發器。
============
通過觸發器 實現添加記錄,則自動添加插入時間
set @newid=NEW.recharge_id;
if @newid>0 then
update tb_recharge_records set add_time=now() where recharge_id=@newid and ""="觸發器不可調用宿主表";
end if;