感谢 确实是在before 的触发器。 我的需求是只能用before的触发器来实现 我的触发器如下CREATE TRIGGER `a_insert` BEFORE INSERT ON `a` FOR EACH ROW BEGIN declare bIDexists int default 0; select id into bIDexists from a where email=NEW.email limit 1; IF bIDexists>0 THEN set new.SuperId=bIDexists; insert ignore into b values(bIDexists); else set new.superId=LAST_INSERT_ID() end if; END;; DELIMITER ;这个触发器字单独在数据库里用没有任何问题 。 测试 insert into a(email ,superid) values('sss',LAST_INSERT_ID()) insert into a(email) values('sssd') 都是没有问题的但是现在应用的架构是mysql+linux+java我在jsp页面上填写数据 之后确定 在email不在原来的a表的时候有错误 user register failed:No data - zero rows fetched, selected, or processed如果email是a表存在的(比如以前a表有条记录的email是 a@163。com, 你在页面上填入这个旧email,这条记录可以添加成功), 填完数据点 【确定】 是正确 ;反过来,如果email是a表不存在的, 会发生以上错误user register failed:No data - zero rows fetched,。原因 ???
从记录里发现这个值是0
我的需求是只能用before的触发器来实现 我的触发器如下CREATE TRIGGER `a_insert` BEFORE INSERT ON `a` FOR EACH ROW BEGIN
declare bIDexists int default 0;
select id into bIDexists from a where email=NEW.email limit 1;
IF bIDexists>0 THEN
set new.SuperId=bIDexists;
insert ignore into b values(bIDexists);
else
set new.superId=LAST_INSERT_ID()
end if;
END;;
DELIMITER ;这个触发器字单独在数据库里用没有任何问题 。
测试 insert into a(email ,superid) values('sss',LAST_INSERT_ID())
insert into a(email) values('sssd') 都是没有问题的但是现在应用的架构是mysql+linux+java我在jsp页面上填写数据 之后确定 在email不在原来的a表的时候有错误
user register failed:No data - zero rows fetched, selected, or processed如果email是a表存在的(比如以前a表有条记录的email是 a@163。com, 你在页面上填入这个旧email,这条记录可以添加成功), 填完数据点 【确定】 是正确 ;反过来,如果email是a表不存在的, 会发生以上错误user register failed:No data - zero rows fetched,。原因 ???