我们在写数据库程序的时候, 经常会需要获取某个表中的最大序号数, 或者刚插入的数据的ID值, 一般情况下获取刚插入的数据的id, 使用select max(id) from table 是可以的, 但在多线程, 高并发的情况下, 就不行了m 开始的时候我想的是使用mysql_insert_id(), 不知道会不会在并发的时候产生影响, 查询了下手册, 也是才发现, 是根据connection来的, 不同用户间不会产生影响, 所以也不用去想先把表锁起来, 插入取得ID值后再解锁, 直接正常插入, 然后取值即可, 同理在命令行下执行select last_insert_id();或者select @@IDENTITY;返回的都是本会话下的上次插入的值, 即使另开一个会话插入一条数据, 在本会话下这两个值也不会变!

05-27 13:10