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

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

Linda Hamilton
Libérer: 2024-11-19 01:33:02
original
313 Les gens l'ont consulté

How Can I Insert Data into Multiple Tables Simultaneously in MySQL?

Insérer des données dans plusieurs tables simultanément

L'insertion de données dans deux tables simultanément peut être réalisée dans MySQL, bien que cela nécessite une approche différente par rapport à l'instruction SQL fournie.

La requête fournie tente d'insérer des données à la fois dans les tables de visites et d'inscription en une seule opération. Cependant, ceci n'est pas directement pris en charge par MySQL car les instructions INSERT ne peuvent cibler qu'une seule table à la fois. Pour obtenir le résultat souhaité, vous disposez des options suivantes :

Traitement par lots

Exécuter deux requêtes INSERT distinctes 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;
Copier après la connexion

Procédure stockée

Créer une procédure stockée qui encapsule les deux inserts opérations :

CREATE PROCEDURE insert_into_tables(
    IN card_id INT,
    IN type ENUM('in', 'out'),
    IN timestamp INT
)
BEGIN
    DECLARE visit_id INT;

    INSERT INTO visits (card_id) VALUES (card_id);
    SET visit_id = LAST_INSERT_ID();

    INSERT INTO registration (registration_id, type, timestamp, visit_id)
    VALUES (NULL, type, timestamp, visit_id);
END;
Copier après la connexion

Vous pouvez ensuite invoquer la procédure stockée avec les paramètres souhaités :

CALL insert_into_tables(12131141, 'in', UNIX_TIMESTAMP());
Copier après la connexion

Gestion des transactions

Pour vous assurer que les deux Les opérations d'insertion sont effectuées de manière atomique, enveloppez-les dans une transaction :

BEGIN 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;
Copier après la connexion

En utilisant ces approches, vous pouvez insérer des données dans plusieurs tables simultanément dans MySQL.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal