美文网首页
【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