Nous sommes en train de migrer entre 2 systèmes et avons besoin de 2 champs pour l'une de nos tables de base de données qui restent toujours synchronisées. Voici la structure de la table:MySQL Trigger pour mettre à jour une nouvelle ligne
CREATE TABLE `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`object_id` int(11) NOT NULL DEFAULT '0',
`value` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `object_id` (`object_id`)
);
Chaque fois que l'un des systèmes insère une nouvelle ligne, nous devons avoir OBJECT_ID mis à id. Nous ne pouvons pas utiliser 'before insert' car la colonne id est une colonne auto_increment donc sa valeur est NULL avant l'insertion et en raison des limitations des déclencheurs MySQL 'after insert' on ne peut pas faire ce qui suit:
CREATE TRIGGER insert_example
AFTER INSERT ON example
FOR EACH ROW
SET NEW.object_id = NEW.id;
Je ne peux pas mettre à jour le code pour l'un ou l'autre système donc j'ai besoin d'un moyen d'accomplir cela du côté de la base de données. Les deux systèmes vont insérer de nouvelles lignes. Comment puis-je accomplir cela?
Vous ne pouvez pas utiliser auparavant puisque NEW.id est généré sur insert donc avant l'insertion sa valeur est 0. –
Right ... J'ai édité ma réponse – wonk0