两次插入,怎么保证插入两个表的catid一样呢?

解决方案 »

  1.   

    有,
    就是用
    LAST_INSERT_ID();
    这个SQL 函数
      

  2.   

    last_insert_id()好像值针对当前表起做用。
    last_insert_id()是客户机专用的。例如:create table seq(seql int unsigned not null)
    insert into seq values(0)
    update seq set seql=last_insert_id(seql+1)
      

  3.   

    同一个连接会话在向一个自增字段里插入一个数据后,
    用 LAST_INSERT_ID() 所得到的就是前一插入语句的自增值,
    这个值是在服务器端维护的,
    其它用户插入新数据不会影响到该连接用户使用该函数所得返回值,你可以运行两个 mysql.exe 来建立两个连接会话       A                                     B
     |     INSERT INTO `tA` SET id = NULL;  
     | 时  SELECT LAST_INSERT_ID();              INSERT INTO `tA` SET id = NULL;
     | 间     ->  1
     | 顺  SELECT LAST_INSERT_ID();              SELECT LAST_INSERT_ID(); 
     v 序     ->  1                              ->  2 A 用户先插入一个记录
    查询 LAST_INSERT_ID() 返回值 1
    当 A 用户查询时,B 用户也插入了一个新记录,
    在 B 插入新记录后,A 查询 LAST_INSERT_ID() 还是得 1,
    而 B 用户查询 LAST_INSERT_ID() 得2
    按时间 A 的先,所以 A 的为1
    LAST_INSERT_ID()  顾名思义就是上一条插入时的ID
    它不受其它用户的影响
    你可以用 MySQL 客户端试一试,
    方法如上