Mysql 最后插入的前缀ID

Mysql 最后插入的前缀ID,mysql,Mysql,我们有一个表,其中有一列包含前缀自动生成的ID(即ABC-000001,ABC-000002,等等)。我们如何在这里获得最后一个插入的ID LAST\u INSERT\u ID()在这里没有帮助。谢谢 不适用于PHP。这无法完成;一般情况下,如果我们将“last inserted ID”表示最近插入到表中的行的ID列的值,则情况并非如此 要实现这一点,您需要某种方法来确定哪一行是“最近插入的”行。例如,存储记录插入行的时间的datetime或timestamp列。(深入研究你将如何做,这超出了你

我们有一个表,其中有一列包含前缀自动生成的ID(即
ABC-000001
ABC-000002
,等等)。我们如何在这里获得最后一个插入的ID

LAST\u INSERT\u ID()
在这里没有帮助。谢谢


不适用于PHP。

这无法完成;一般情况下,如果我们将“last inserted ID”表示最近插入到表中的行的ID列的值,则情况并非如此

要实现这一点,您需要某种方法来确定哪一行是“最近插入的”行。例如,存储记录插入行的时间的datetime或timestamp列。(深入研究你将如何做,这超出了你提出的问题。)

作为另一种选择,“带前缀的自动生成ID”的生成器可以保留上次生成的ID值的记录。但不能保证它自动生成的值实际上是作为ID值存储在表中的一行中


可以在INSERT触发器之后编写
。该触发器可以在单独的表中记录ID列的值。您可以从第二个表中检索值

CREATE TRIGGER mytable_ai 
AFTER INSERT ON mytable FOR EACH ROW
BEGIN

  -- a reference `new`.`ID` gets the ID column from the row just inserted
  -- store this in a second table

END;
您希望第二个表中只有一行,并且希望触发器更新该行。您可以使用虚拟主键,并使用
插入。。。在重复键上
,或者如果假设有一行,则可以执行更新。(我只是说这可能是一种可行的方法,但实现对我来说似乎很脆弱。)



当然,我想知道的是,要求获取“最后插入的”“前缀自动生成的ID”解决了什么问题。

如果不编写自己的ID生成器,您就不能这样做。mysql自动增量只对整数有效,不做前缀。非常感谢!这是如此宝贵的投入。我们正在通过SP调用从Java应用程序向表中插入行。填充其他列后,将生成自动ID。然后,我们将把这个ID返回到UI。让执行插入的进程返回它插入到表中的行的
ID
值,这与更一般的“获取最后插入的ID”规范大不相同。插入后触发器可以将列的
ID
值存储在用户变量中,执行插入的同一数据库会话可以运行查询以检索用户变量的值。您可能需要一个相应的BEFORE INSERT触发器来清除该用户变量。