Maison >base de données >tutoriel mysql >Comment insérer des données dans plusieurs tables simultanément dans MySQL ?

Comment insérer des données dans plusieurs tables simultanément dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-11 21:35:03657parcourir

How to Insert Data into Multiple Tables Simultaneously in MySQL?

Insertion dans plusieurs tables dans MySQL

Dans ce scénario, l'objectif est d'insérer des données dans deux tables simultanément : visites et inscription. Bien qu'une seule instruction INSERT puisse généralement insérer des données dans une seule table, cela n'est pas réalisable dans ce cas.

Pour relever ce défi, il existe deux options viables :

1. Insertion par lots :

Décomposez l'insertion en deux instructions INSERT distinctes et exécutez-les par lots. Cette approche consiste à utiliser la commande EXECUTE comme suit :

START TRANSACTION;
INSERT INTO visits (visit_id, card_id) VALUES (NULL, 12131141);
INSERT INTO registration (registration_id, type, timestamp, visit_id) 
VALUES (NULL, 'in', UNIX_TIMESTAMP(), LAST_INSERT_ID());
COMMIT;

2. Procédure stockée :

Créez une procédure stockée qui encapsule les deux instructions INSERT. Cela vous permet d'exécuter les deux insertions avec un seul appel de procédure. Prenons l'exemple suivant :

CREATE PROCEDURE insert_into_multiple_tables(
    IN visit_card_id INT,
    IN registration_type ENUM('in', 'out')
)
BEGIN
    # Insert into `visits` table
    INSERT INTO visits (visit_id, card_id) VALUES (NULL, visit_card_id);
    
    # Insert into `registration` table
    INSERT INTO registration (registration_id, type, timestamp, visit_id) 
    VALUES (NULL, registration_type, UNIX_TIMESTAMP(), LAST_INSERT_ID());
END;

Pour appeler la procédure stockée, utilisez la syntaxe suivante :

CALL insert_into_multiple_tables(12131141, 'in');

Les méthodes d'insertion par lots et de procédure stockée fournissent des moyens fiables d'insérer des données dans plusieurs tableaux. Le choix entre les deux dépend des exigences spécifiques de l'application et des considérations de performances.

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