ホームページ > データベース > mysql チュートリアル > MySQL で複数のテーブルに同時にデータを挿入するにはどうすればよいですか?

MySQL で複数のテーブルに同時にデータを挿入するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-19 01:33:02
オリジナル
371 人が閲覧しました

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

複数のテーブルへのデータの同時挿入

2 つのテーブルへのデータの同時挿入は MySQL で実現できますが、MySQL とは異なるアプローチが必要です。提供された SQL ステートメント。

提供されたクエリは、訪問テーブルと登録テーブルの両方に一度にデータを挿入しようとします。 手術。ただし、INSERT ステートメントは一度に 1 つのテーブルしかターゲットにできないため、これは MySQL では直接サポートされていません。望ましい結果を達成するには、次のオプションがあります:

バッチ処理

2 つの別々の 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;
ログイン後にコピー

ストアド プロシージャ

作成両方の挿入操作をカプセル化するストアド プロシージャ:

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;
ログイン後にコピー

その後、必要なパラメータを指定してストアド プロシージャを呼び出すことができます:

CALL insert_into_tables(12131141, 'in', UNIX_TIMESTAMP());
ログイン後にコピー

Transaction Management

両方の挿入操作が確実にアトミックに実行されるようにするには、これらの操作をトランザクション:

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;
ログイン後にコピー

これらのアプローチを利用すると、MySQL で複数のテーブルに同時にデータを挿入できます。

以上がMySQL で複数のテーブルに同時にデータを挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート