単一のクエリを使用して MySQL の複数のテーブルに同時にデータを挿入することは実現できません。ただし、これを実現する別のアプローチもあります。
複数の INSERT ステートメントをバッチとして実行できます。
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;
または、両方の 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
その後、目的のカード ID を使用してストアド プロシージャを実行できます:
CALL insert_into_multiple_tables(12131141);
データの整合性を確保するには、次のようにします。バッチまたはストアド プロシージャをトランザクションでラップできます:
BEGIN TRANSACTION; -- Execute INSERT statements here COMMIT;
いずれかの INSERT ステートメントが失敗した場合、トランザクションはロールバックされ、影響を受けるすべてのテーブルのデータの一貫性が確保されます。
以上がMySQL の複数のテーブルにデータを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。