这个id如何求得?
a(id, name ,superId)这里id是自增长 步长为1;  superId参照id也就是他的值只能是已经存在的 id现在在java代码里
if  name<>'' then
insert a(name ,superId) value ('sss',  ?)------------这个新插入的id 该如何求 ???这里superId应该等于新插入的                                                     id值 , 不知道该如何去求
                                                                              
end 

解决方案 »

  1.   

    触发器里 set new.superId=LAST_INSERT_ID()失败 
    从记录里发现这个值是0
     
      

  2.   

    提问时建议把问题说明清楚,否则没人会猜是在触发器中使用这个。在BEFORE INSERT中是得不到这个ID的,只能在AFTER中获取。
      

  3.   

    感谢 确实是在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,。原因 ???