本文共 458 字,大约阅读时间需要 1 分钟。
在mysql操作中执行insert,是没有自增id返回的,这就对于后续编写逻辑造成了很大不便。
其实有几种方法可以做到insert后直接获取到自增id。
1.执行select max(id);
原理是直接查找数据库的最大id,坏处:一旦并发量大、数据量多时就会出现性能低、查找错误的情况。
2.执行selsct LAST_INSERT_ID();
原理是因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数 将返回该Connection对AUTO_INCREMENT列最新的insert or update*操作生成的第一个record的ID。这个值不会被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。使用单INSERT语句插入多条记录, LAST_INSERT_ID返回一个列表。
要注意的是,当你执行多个insert时,它会返回第一个自增id。
参考:
转载地址:http://ywyhp.baihongyu.com/