0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MySQLで複数テーブルに一度にデータをインサートする方法:ストアドプロシージャの活用

Posted at

MySQLで複数のテーブルにデータを一度にインサートしたい場合、ストアドプロシージャを活用することで効率的に実現することができます。この記事では、ストアドプロシージャを使用して複数のテーブルにデータをインサートする方法を紹介します。

ストアドプロシージャとは

ストアドプロシージャは、一連のSQL文をまとめて実行するためのサーバーサイドのプログラムです。ストアドプロシージャを使用することで、複雑な操作を簡単に呼び出せるようになります。特に、トランザクション管理を行いたい場合に便利です。

複数テーブルへのデータインサートのための準備

まず、例として使用する2つのテーブルを作成します。

CREATE TABLE table1 (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column1 VARCHAR(255),
    column2 VARCHAR(255)
);

CREATE TABLE table2 (
    id INT AUTO_INCREMENT PRIMARY KEY,
    column3 VARCHAR(255),
    column4 VARCHAR(255)
);

ストアドプロシージャの作成

次に、複数のテーブルにデータをインサートするためのストアドプロシージャを作成します。このプロシージャは、4つの引数を受け取り、それぞれのテーブルにインサートします。

DELIMITER //

CREATE PROCEDURE insert_multiple_tables(
    IN val1 VARCHAR(255),
    IN val2 VARCHAR(255),
    IN val3 VARCHAR(255),
    IN val4 VARCHAR(255)
)
BEGIN
    -- トランザクション開始
    START TRANSACTION;
    
    -- 最初のテーブルにデータをインサート
    INSERT INTO table1 (column1, column2) VALUES (val1, val2);
    
    -- 2つ目のテーブルにデータをインサート
    INSERT INTO table2 (column3, column4) VALUES (val3, val4);
    
    -- コミット
    COMMIT;
END //

DELIMITER ;

ストアドプロシージャの実行

作成したストアドプロシージャを呼び出して、複数のテーブルにデータをインサートします。

CALL insert_multiple_tables('value1', 'value2', 'value3', 'value4');

このようにすることで、1回の呼び出しで複数のテーブルにデータをインサートすることができます。

まとめ

MySQLで複数のテーブルに一度にデータをインサートする方法として、ストアドプロシージャを使用する方法を紹介しました。これにより、データの整合性を保ちながら効率的にデータを管理することができます。ぜひ、ストアドプロシージャを活用してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?