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 :
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;
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);
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!