/ / Faking Auto Increment Increment en una tabla en MySQL usando Trigger - mysql, drupal-6, triggers, sync, auto-increment

Incremento de Incremento Automático de Falsificación en una Tabla en MySQL Usando Trigger - mysql, drupal-6, triggers, sync, auto-increment

Tengo una tabla de contenido en mi base de datos MySQL (unTabla de contenido de Drupal, para lo que vale la pena), que tiene una clave primaria auto-incrementada, nid. Quiero ser capaz de implementar una solución de id e impar, donde el contenido creado en producción tiene incluso identificaciones y el contenido creado en dev tiene IDs impares, para evitar conflictos de ID cuando sincronizo. Desafortunadamente, MySQL no admite secuencias, o incrementos de incremento automático por tabla (es decir, incremento en 2 solo para db.node, en lugar de 1).

La mejor solución que se me ocurre es tener unEl disparador BEFORE INSERT y AFTER INSERT establece el valor de sesión de auto_increment_increment en 2 en el disparador BEFORE INSERT, y luego lo restablece en 1 en el disparador AFTER INSERT. Ya que solo establece la variable de sesión, no debería tener ningún efecto en otros procesos, y dado que es una tabla de Drupal CMS y no ocurre nada complicado, parece seguro, aunque se sienta mal.

Sin embargo, soy un administrador de MySQL intermedio (en el mejor:)) y como dije, ciertamente se siente mal, así que pensé que "pondría esto por ahí y vería si alguien tiene alguna reacción negativa fuerte a esto, tal vez algún problema que no esté previendo". (Y supongo que si nadie lo hace, tal vez alguien más lo encontrará útil).

Respuestas

0 para la respuesta № 1

Este es un ejemplo simple de lo que quiere hacer, asumiendo que hay una columna entera "seq" en la tabla "my_table_name":

DROP trigger my_trigger_name;

CREATE TRIGGER my_trigger_name
BEFORE INSERT ON my_table_name
FOR EACH ROW
SET NEW.seq = (select ifnull(max(seq)+1,1) from source_table_name);