primary partir numero auto_increment mysql insert duplicates last-insert-id

mysql - partir - Evite aumentar el valor de Auto_increment?



reset auto_increment mysql (0)

En MySQL, puede insertar una fila y actualizar la ''última ID de inserción'' al mismo tiempo. Estoy usando este truco para poder insertar elementos condicionalmente (unicidad) y aún así obtener el ID único en todos los casos.

El código a continuación funciona. El problema es que la instrucción ON DUPLICATE KEY también actualiza el valor de Auto_increment . ¿Es posible evitar eso?

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();

Ahora tenemos una entrada con id=1 . Sin embargo, la siguiente entrada tendrá id=3 ya que el valor de Auto_increment se actualizó cuando falló el segundo INSERT . Esto se puede verificar de la siguiente manera:

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

P: ¿Es posible usar este truco (o equivalente) y mantener el valor de Auto_increment ? Obviamente, en este caso, no necesita actualizarse.