Maison >base de données >tutoriel mysql >Comment insérer des données dans plusieurs tables simultanément 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!