J'utilise un déclencheur pour insérer une ligne et je veux utiliser le dernier identifiant créé pour utiliser dans la requête ultérieure.
Comment pourrais-je faire cela? P>
Le code ressemble à: p >
BEGIN IF (NEW.counter >= 100) THEN INSERT INTO tagCategories (name, counter) VALUES ('unnamed', NEW.counter); // here i want to have access to the above inserted id UPDATE tagCategories2tagPairs SET tagCategoryId = <<ID_HERE>> WHERE tagPairId = OLD.id END IF; END
5 Réponses :
Avez-vous regardé last_insert_id () ? Mais sachez: p>
Si vous insérez plusieurs rangées en utilisant un Déclaration à insertion unique, Last_insert_id () renvoie la valeur généré pour la première rangée insérée seulement. p> blockQuote>
Lorsque j'utilise cela dans un antérieur_trigger, il renvoie l'identifiant inséré précédent pour une raison quelconque ... E.G. new.id code> peut cependant être utilisé. Et par exemple
Old.Id Code> peut être utilisé sur Supprimer ou mettre à jour (au moins c'est ce qui est écrit dans les documents.). DOCS.
@ Ravo10 Exactement, il faut utiliser les nouveaux et les anciens objets pour éviter le problème avec plusieurs insertions de lignes au lieu de Last_Insert_ID (). Ceci est montré dans Cette réponse .
Je voulais utiliser des initiales de la société telles que "AAA" et ajouter l'ID d'insertion et l'utiliser comme ID d'entreprise interne et c'est ainsi que j'ai pris le dernier identifiant d'insertion actuelle
Utilisez NEW.ID
BEGIN insert INTO test_questions (test_id, question, variant1, variant2, variant3, w1, type_id) SELECT NEW.id, t1.question, t1.v1, t1.v2, t1.v3, t1.answer, 1 FROM new_minitest_questions t1 WHERE t1.mt_id = NEW.old_id; END
Le déclencheur suivant obtiendra la dernière valeur d'incrémentation automatique du schéma d'informations. J'avais écrit cette gâchette pour générer une limace.
Pour les instances, si le nom de la colonne est "Nom" et la colonne a une valeur telle que "Robin Shankar", le déclencheur remplacerait des espaces avec "-" et ajoute également l'auto ID d'incrément à la fin de la limace, ce qui fait une limace unique. P>
SET NEW.num=CONCAT("Ð-", ( SELECT `auto_increment` FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'menu') )
max (id) et ainsi de suite est de ne pas travailler si vous supprimez un dernier enregistrement