请问一下,mysql的sequence是自动递增的,不需要进行操作。
那我在插入一条主记录的时候,同时要给这个主键的其他表进行插入数据。这时候,我根本取不到这个递增的sequence阿。。这个问题怎么解决阿。。

解决方案 »

  1.   

    你是要刚插入的这个自增值吗?
    select last_insert_id();或
    select `auto_increment` from information_schema.tables where table_schema='库名' and table_name='表名'
      

  2.   

    用LAST_INSERT_ID()会出问题吗??   数据库同时操作的话,这个id会不会被别人抢掉啊??
      

  3.   

    LAST_INSERT_ID() LAST_INSERT_ID(expr) 
    自动返回最后一个INSERT或 UPDATE 问询为 AUTO_INCREMENT列设置的第一个 发生的值。mysql> SELECT LAST_INSERT_ID();        -> 195产生的ID 每次连接后保存在服务器中。这意味着函数向一个给定客户端返回的值是该客户端产生对影响AUTO_INCREMENT列的最新语句第一个 AUTO_INCREMENT值的。这个值不能被其它客户端影响,即使它们产生它们自己的 AUTO_INCREMENT值。这个行为保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁或处理。
      

  4.   

    重点: 假如你使用单INSERT语句插入多个行,  LAST_INSERT_ID() 只返回插入的第一行产生的值。其原因是这使依靠其它服务器复制同样的 INSERT语句变得简单。 例如: mysql> INSERT INTO t VALUES
        -> (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
     
    mysql> SELECT * FROM t;
    +----+------+
    | id | name |
    +----+------+
    |  1 | Bob  |
    |  2 | Mary |
    |  3 | Jane |
    |  4 | Lisa |
    +----+------+
    4 rows in set (0.01 sec)
     
    mysql> SELECT LAST_INSERT_ID();
    +------------------+
    | LAST_INSERT_ID() |
    +------------------+
    |                2 |
    +------------------+
    1 row in set (0.00 sec)
    虽然第二个问询将3 个新行插入 t, 对这些行的第一行产生的 ID 为 2, 这也是 LAST_INSERT_ID()返回的值。
      

  5.   

    如果存在这种情况的话,这时,你只能通过:select `auto_increment` from information_schema.tables where table_schema='库名' and table_name='表名'