避免增加Auto_increment值?

时间:2012-10-02 14:14:21

标签: mysql insert duplicates last-insert-id

在MySQL中,您可以插入一行并同时更新“最后一次插入ID”。我正在使用这个技巧来有条件地插入项目(唯一性)并仍然在所有案例中获得唯一ID。

以下代码有效。问题是ON DUPLICATE KEY语句还会更新Auto_increment值。有可能避免这种情况吗?

CREATE TABLE T(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    X VARCHAR(64) NOT NULL UNIQUE
) ENGINE = InnoDB DEFAULT CHARSET=utf8;

INSERT INTO T(X) VALUES ('x') ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id);
SELECT LAST_INSERT_ID();
INSERT INTO T(X) VALUES ('x') ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id);
SELECT LAST_INSERT_ID();

现在我们有一个id=1条目。但是,下一个条目将id=3,因为当第二个Auto_increment失败时INSERT值已更新。可以按如下方式检查:

SELECT Auto_increment FROM information_schema.tables WHERE table_name = 't'
     AND table_schema = DATABASE();

问:是否可以使用此技巧(或等效)并保留Auto_increment值?显然,在这种情况下,它不需要更新。

0 个答案:

没有答案