Je suis incapable de tester cela maintenant, mais je suis curieux de la réponse.
Si j'ai une gâchette sur la table A qui écrit un nouvel enregistrement au tableau B, LAST_INSERT_ID()
Dites-moi le mis à jour ID
pour A ou B? Je suis curieux de mysql et de PHP, mais ma compréhension est que PHP appelle simplement la mise en œuvre de MySQL.
Comment puis-je obtenir le dernier identifiant inséré pour B s'il retourne normalement A, et vice-versa?
L'effet d'une routine ou d'une gâchette stockée sur la valeur de Last_Insert_ID () observée par des déclarations suivantes dépend du type de routine:
....
[.____] Pour les fonctions stockées et les déclencheurs qui modifient la valeur, la valeur est restaurée lorsque la fonction ou la gâchette se termine, les déclarations suivantes ne voient pas une valeur modifiée. (Avant MySQL 5.0.12, la valeur n'est pas restaurée et les déclarations suivantes ont une valeur modifiée.)
Ainsi, tout ce qui se passe à l'intérieur de la gâchette [S] sur A n'affecte pas la valeur renvoyée par LAST_INSERT_ID()
exécutée en dehors du corps de la gâchette. Avec le corps de la gâchette LAST_INSERT_ID
Réfléchira à des inserts que vous avez faits à une autre table. Pour obtenir l'identifiant dernier pour B, vous devez stocker la valeur de LAST_INSERT_ID()
quelque part (nouvelle table ou une nouvelle colonne dans A), par exemple,
delimiter /
CREATE trigger biA before insert on A
for each row
begin
insert into B(name) values('aaa');
set new.b_id := (select last_insert_id());
end;
/