我们有一个包含前缀自动生成ID的列的表。 (即ABC-000001
,ABC-000002
等)。我们如何获取最后插入的ID?
LAST_INSERT_ID()
在这里没有帮助。感谢。
不适用于PHP。
答案 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”会解决问题。