Heim >Datenbank >MySQL-Tutorial >Wie füge ich in MySQL Daten gleichzeitig in mehrere Tabellen ein?
In diesem Szenario besteht das Ziel darin, Daten gleichzeitig in zwei Tabellen einzufügen: Besuche und Registrierung. Während eine einzelne INSERT-Anweisung normalerweise Daten in eine Tabelle einfügen kann, ist dies in diesem Fall nicht möglich.
Um dieser Herausforderung zu begegnen, gibt es zwei praktikable Optionen:
1. Batch-Einfügung:
Unterteilen Sie die Einfügung in zwei unterschiedliche INSERT-Anweisungen und führen Sie sie als Batch aus. Bei diesem Ansatz wird der EXECUTE-Befehl wie folgt verwendet:
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. Gespeicherte Prozedur:
Erstellen Sie eine gespeicherte Prozedur, die die beiden INSERT-Anweisungen kapselt. Dadurch können Sie beide Einfügungen mit einem einzigen Prozeduraufruf ausführen. Betrachten Sie das folgende Beispiel:
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;
Um die gespeicherte Prozedur aufzurufen, verwenden Sie die folgende Syntax:
CALL insert_into_multiple_tables(12131141, 'in');
Sowohl die Stapeleinfügungsmethode als auch die Methode der gespeicherten Prozedur bieten zuverlässige Möglichkeiten zum Einfügen von Daten in mehrere Tische. Die Wahl zwischen beiden hängt von den spezifischen Anwendungsanforderungen und Leistungsaspekten ab.
Das obige ist der detaillierte Inhalt vonWie füge ich in MySQL Daten gleichzeitig in mehrere Tabellen ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!