上次插入的前缀ID

时间:2015-12-11 21:28:40

标签: mysql

我们有一个包含前缀自动生成ID的列的表。 (即ABC-000001ABC-000002等)。我们如何获取最后插入的ID?

LAST_INSERT_ID()在这里没有帮助。感谢。

不适用于PHP。

1 个答案:

答案 0 :(得分:0)

这是不可能做到的;在一般情况下,如果我们将“最后插入的ID”表示最近插入表中的行中的ID列的值。

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

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

可以编写AFTER 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;

您希望第二个表中只有一行,并且您希望触发器更新该行。您可以使用虚拟主键,并使用INSERT ... ON DUPLICATE KEY,或者如果您假设有一行,则可以执行更新。 (我只是说这可能是一种可行的方法,但实施对我来说似乎很脆弱。)

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