Maison  >  Article  >  base de données  >  Comment insérer des données dans plusieurs tables dans MySQL ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 18:26:02311parcourir

How to Insert Data into Multiple Tables in MySQL?

Insérer des données dans plusieurs tables avec MySQL

L'insertion de données simultanément dans plusieurs tables dans MySQL n'est pas réalisable à l'aide d'une seule requête. Cependant, il existe des approches alternatives pour y parvenir :

Traitement par lots

Vous pouvez exécuter plusieurs instructions INSERT par lots :

BEGIN;
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;

Procédure stockée

Vous pouvez également créer une procédure stockée qui encapsule les deux instructions INSERT :

CREATE PROCEDURE insert_into_multiple_tables(
  IN card_id INT
)
BEGIN
  INSERT INTO visits (visit_id, card_id) VALUES (NULL, card_id);
  INSERT INTO registration (registration_id, type, timestamp, visit_id)
  VALUES (NULL, 'in', UNIX_TIMESTAMP(), LAST_INSERT_ID());
END

Vous pouvez puis exécutez la procédure stockée avec l'ID de carte souhaité :

CALL insert_into_multiple_tables(12131141);

Contrôle transactionnel

Pour garantir l'intégrité des données, vous pouvez envelopper le lot ou la procédure stockée dans une transaction :

BEGIN TRANSACTION;
-- Execute INSERT statements here
COMMIT;

Si l'une des instructions INSERT échoue, la transaction sera annulée, garantissant ainsi que les données de toutes les tables concernées restent cohérentes.

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