J'ai une application DB et maintenant nous devons commencer par la réplication (réplication maître-maître). Nous construisons une fonction stockée qui retourne un BIGINT. Cette valeur est unique sur tous les serveurs concernés.Problème mySQL et LAST_INSERT_ID
La situation: J'ai une définition de table:
create table test (
id BIGINT not null primary key auto_increment,
col1 TEXT);
la table a un déclencheur avant d'insérer:
CREATE TRIGGER test_insert BEFORE INSERT ON test
FOR EACH ROW BEGIN
IF NEW.id = 0 THEN
SET @my_uuid = MYUUID();
SET NEW.id = @my_uuid;
END IF;
END;
après une INSERT INTO test (col1) ("foo") J'ai besoin de la valeur de LAST_INSERT_ID() - mais j'ai seulement la valeur "0".
Je try'd cela dans la détente:
SET NEW.id = LAST_INSERT_ID(@my_uuid);
mais ne pas le travail. J'ai lu la page de manuel mysql disant que tous les changements sur last_insert_id dans les triggers et les fonctions seront annulés à la fin du trigger.
J'essaie d'éviter de modifier l'application (witch utilisation php.last_insert_id()) ...
des idées sur la façon de résoudre ce sans changer de code php-?
grandeurs.