问一下各位大侠,mysql插入一条记录后,如何获取当前的自增值。相当于MSSQL中insert.....select @@identity功能。
在存储过程中insert into login_log_tb(game_id,server_name,account,user_password,login_ip) values (in_game_id,in_server_name,in_account,in_user_password,in_login_ip);#记录日志
set out_log_code=LAST_INSERT_ID();  当我现在不用存储过程了,就用一条语句,不知道怎么解决?

解决方案 »

  1.   

    有两种方法。
    1. select @@identity;
    2. select last_insert_id();
      

  2.   

    insert into login_log_tb(server_name) values ('测试数据')select last_insert_id();有语法错误。但我只希望一条语句解决,因为担心多人insert的时候,获取当前自增值出错。
      

  3.   


    你放心,多人INSERT的时候,不会出错!非要一条语句,我不会。哈。
      

  4.   

    问一下:
    insert into login_log_tb(server_name) values ('服务器');select LAST_INSERT_ID();
    这样写,会当做一个事务处理吗?多人insert会出错吗?
      

  5.   

    我总觉得用;隔开,操作不具原子性了。我还是用事务看看。帮看看这样会有什么问题。语句如下:
    start transaction;insert into login_log_tb(server_name) values ('服务器');select LAST_INSERT_ID(); commit;
      

  6.   


    关于事务和锁:http://blog.csdn.net/ldb2741/archive/2010/02/25/5325161.aspx
      

  7.   

    多人同时写的话,不会相互影响。LAST_INSERT_ID();  是 connection 级的变量,各个不同连接相互之间不影响。