日期:2014-05-16  浏览次数:20744 次

请教mysql触发器问题
create trigger TrainingActSignUp_tri
before insert
on trainingactsignup
for each row
 
begin

declare tempTgidVar int;
declare deptid int;
declare rs decimal;
declare rs_cursor cursor for select tgid from tgroup where fullpath like '%,,'||deptid||',,%';
set tempTgidVar=0;
set deptid=new.entityid;

open rs_cursor;

aa: loop
fetch rs_cursor into rs;
  select count(tasu.entityid) into tempTgidVar from trainingactsignup tasu where tasu.entityid = rs
  and tasu.entitytype = 2 and tasu.taid = new.taid;
  if(tempTgidVar = 0) then
  insert into trainingactsignup set taid=new.taid,entitytype=2,entityid=rs,isautomatism=1,creatorid=new.creatorid,createtime=new.createtime;
 
  end if;
  end loop aa;

close rs_cursor;
end;
这个触发器 在表里面添加数据是 死循环了 求解决办法!

------解决方案--------------------
select tgid from tgroup where fullpath like '%,,'||deptid||',,%';

这句可以执行吗
------解决方案--------------------
这个触发器是你插入之前执行这个触发 ,这个触发又插入!看看是不是这个原因 ,before改成after试试
------解决方案--------------------
在你的TRIGGER中,有对本表插入的语句,检查一下,要达到什么目的
------解决方案--------------------
MYSQL无法实现,你想一个INSERT插入两条记录?
------解决方案--------------------
无法同时插入两条记录的。