有两个表
u_info和u_register表
u_info表里的u_id是自增的主键
u_register表里是u_id是主键,也是外键,并且是级联删除u_info表里有触发器,在插入行后触发往u_register表里也插入一条记录,而最主要的是我想让u_register表里的u_id跟刚刚往u_info里插入的u_id是一样的触发器的语句写成下边这样会报错
insert into u_register(u_id,adddate) values(((select last_insert_id())),now())而下边这样就不会报错
insert into u_register(u_id,adddate) values((select max(u_id) from u_info),now())错误语句报错信息是:
Cannot add or update a child row: a foreign key constraint fails (`home`.`u_register`, CONSTRAINT `f_u_info_id` FOREIGN KEY (`u_id`) REFERENCES `u_info` (`u_id`) ON DELETE CASCADE)应该是主外键不匹配,可是select last_insert_id()应该是匹配的呀
查看自动递增的下个种子值为1
而select last_insert_id();查出来的值也是1我要做的功能其实就是想给两个表里同时插入数据,而u_id为同一个自增的值

解决方案 »

  1.   

    mysql外键,,,,还没有接触过啊,先帮你顶。http://topic.csdn.net/u/20091128/10/c63e491a-173e-4709-98ea-705f5cb7d3a1.html
      

  2.   

    本帖最后由 ACMAIN_CHM 于 2009-11-28 11:05:22 编辑
      

  3.   

    换成new.u_id就可以了
    new.u_id是什么意思啊?
    是个mysql的函数?
    还是u_id是我的字段啊?
    我的主外键如果是u_iid
    是不是就变成new.u_iid了?
      

  4.   

    新插入的记录?
    那是不是跟同一连接没关系了?
    比如有A和B两个用户同时在插入A插入了u_info表,这时候u_id为1
    B也插入了u_info表,这时候u_id为2然后A用户的触发器执行,那new.u_id的值是不是就变成了2了??
      

  5.   

    new是“当前正在被插入的新记录”,也就是触发这个触发器的记录。
      

  6.   


    New.xxx代码触发器触发时你所输入的新值。对应的是Old.xxx 代表原值不是函数。可以理解为一个虚拟表,两个虚拟表 new , old 仅有一条记录。new 是新记录 old 是旧记录。不知道你这个问题想问什么。
      

  7.   

    什么叫 "跟同一连接没关系了" ?不是。A用户的触发器执行,那new.u_id的值 为 1