mysql 觸發器 插入


 

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM