我们什么时候给LAST_INSERT_ID()一个参数?

时间:2011-08-19 03:31:21

标签: mysql lastinsertid

引自here

mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
mysql> SELECT LAST_INSERT_ID();

上述用例是什么(有什么好处)?

我从未在之前使用任何参数LAST_INSERT_ID

更新

我的问题是为什么想要以这种方式模拟这种类型的序列,当它通过自动递增的主键自动开箱即用?

2 个答案:

答案 0 :(得分:1)

在不使用AUTO_INCREMENT的情况下生成序列的用例是在多个表中使用结果ID值,并且该值在所有表中都必须是唯一的。每个表中的AUTO_INCREMENT通常可能会导致每个表中存在相同的值。

忽略正常的表格要求,可以举一个例子。每次给定的考试都需要一个唯一的ID,但考试会记录在多个表格中:弹出式测验,每周考试,中期考试和期末考试。使用OP提供的引号可以生成ID序列,该序列可用于使ID在所有表中保持唯一。

答案 1 :(得分:0)

同样引自here

  

如果将expr作为LAST_INSERT_ID()的参数给出,则该函数返回该参数的值,并将其记为LAST_INSERT_ID()返回的下一个值。这可以用来模拟序列: