Maison >base de données >tutoriel mysql >Comment puis-je récupérer les valeurs de sortie de plusieurs tables lors d'une opération INSERT ?

Comment puis-je récupérer les valeurs de sortie de plusieurs tables lors d'une opération INSERT ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 16:39:41523parcourir

How Can I Retrieve Output Values from Multiple Tables During an INSERT Operation?

Insérer dans... Fusionner... Sélectionner : Exploiter les valeurs de sortie de plusieurs tables

Supposons que vous deviez insérer des données dans une cible table et récupère en outre des informations spécifiques à partir d’autres tables impliquées dans l’opération d’insertion. Bien que la clause OUTPUT capture facilement les données de la table insérée, elle ne suffit pas lors de la recherche de valeurs à partir de plusieurs tables. Dans de tels scénarios, l'instruction MERGE apparaît comme une solution puissante.

Pour y parvenir, écartez-vous d'une simple approche INSERT...SELECT et utilisez plutôt une instruction MERGE. Ce changement vous permet d'exploiter les valeurs des données insérées et sources dans la clause OUTPUT.

Voici un exemple illustratif :

MERGE INTO Table3 USING
(
    SELECT null as col2, 
           110 as col3, 
           Table1.ID as col4, 
           Table2.Column2 as col5,
           Table2.Id as col6
    FROM Table1
    JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
    JOIN Table2 on Table1Table2Link.Column2=Table2.ID
) AS s ON 1 = 0 -- Always not matched
WHEN NOT MATCHED THEN
INSERT (Column2, Column3, Column4, Column5)
VALUES (s.col2, s.col3, s.col4, s.col5)
OUTPUT Inserted.ID, s.col6
INTO @MyTableVar (insertedId, Table2Id); 

Dans cette instruction MERGE, une table temporaire ou une variable de table (@MyTableVar) est utilisé pour capturer à la fois Inserted.ID (la colonne d'identité de Table3) et Table2.ID. La condition d'égalité inexistante dans la clause ON (1 = 0) garantit que toutes les lignes entrantes sont toujours prises en compte pour l'insertion et la récupération des données.

Ainsi, l'instruction MERGE insère efficacement les données dans la Table3 et remplit simultanément @MyTableVar avec les valeurs souhaitées des tables insérées et source. Cela vous permet de travailler avec les données insérées en conjonction avec les informations associées provenant d'autres tables, élargissant considérablement l'utilité des opérations d'insertion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn