美文网首页
【SQL】自增数列id的获取

【SQL】自增数列id的获取

作者: Akalin_Lee | 来源:发表于2018-05-22 22:33 被阅读0次

【MYSQL】自增数列id的获取


    在数据库中,经常需要把获得的若干信息分成几部分插入到不同的表中,并通过外键的方式进行连接,如果是有意义且唯一的外键,那么就会很简单,但有时会直接使用插入数据的id(key,自增)作为外键进行连接,由于id是自增的,而非像外键一样由用户指定,所以用户是无法知道id的值的,这就需要采取一些手段。

    一个自然地想法是插入的最后一条数据的id就是我们需要的,所以使用:

select max(id) from tablename

来获取id值,但是该方法是不考虑并发情况的,也就是说在操作的时候必须先加锁,操作完成之后再解锁才能保证结果的正确性,相对来说比较麻烦。

    另一种方法是使用:

select LAST_INSERT_ID()

该方法从语义上来看和第一种方法是一样的,但是该方法是基于数据库连接的,是线程安全的。

注意:使用select last_insert_id()时要注意,当一次插入多条记录时,只是获得第一次插入的id值

所谓线程安全

    1. 在连接1中向A表插入一条记录,A表包含一个auto_increment类型的id。

    2. 在连接2中向A表再插入一条记录。

    3. 结果:在连接1中执行select LAST_INSERT_ID()得到的结果和连接2中执行select LAST_INSERT_ID()的结果是不同的;而在两个连接中执行select max(id)的结果是相同的。

Ref:https://blog.csdn.net/anan890624/article/details/50808515

相关文章

网友评论

      本文标题:【SQL】自增数列id的获取

      本文链接:https://www.haomeiwen.com/subject/sxtljftx.html