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.