INSERT INTO错误后的LAST_INSERT_ID()


LAST_INSERT_ID() after INSERT INTO error

我对LAST_INSERT_ID()(或php上的mysql_INSERT_ID)和一个有两个参数的表(对于本例)有问题。ID:autoincremental valueTEXT:varchar唯一字段。

如果我有这个:

INSERT INTO field (text) VALUES ('a');  -> Insert OK
SELECT LAST_INSERT_ID(); -> ok, returns 1;
INSERT INTO field (text) VALUES ('a');  -> Insert Error (text field is UNIQUE)
INSERT INTO field (text) VALUES ('b');  -> Insert Ok
SELECT LAST_INSERT_ID(); -> ok, but returns 3, not 2

自动递增字段不相关,并且跳过2值。我尝试了START TRANSACTION和ROLLBACK或COMMIT,但我也遇到了同样的问题(或者,我做得不对)。

知道吗?

谢谢。

不,增量ID并不总是MAX+1,如果您按顺序删除以前的记录,它们也不会重新排列。增量ID的序列中是否有间隙并不重要:如果您正确地使用增量ID作为唯一标识符,那么这不是问题。如果你依赖于一个连续的序列,那么你没有正确地设计你的数据库。