MySQL で複数のテーブルに挿入
Mehvish Ashiq
2024年2月16日
このチュートリアルでは、MySQL の複数のテーブルに挿入するトランザクションとストアド プロシージャを例示します。
MySQL で複数のテーブルに挿入
単一の MySQL コマンドを複数のテーブルに挿入する方法はありませんが、MySQL トランザクション を使用してプロジェクトの要件を満たすことができます。
users
と user_profiles
という名前の 2つのテーブルを作成しましょう。 users
テーブルには user_id
、user_name
、user_password
の 3つの属性があり、profiles
テーブルには属性として user_id
、user_bio
、homepage
が含まれています。
両方のテーブルを作成するために使用する次のコマンドを参照してください。
コード例:
CREATE TABLE users(
user_id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(45) NOT NULL,
user_password VARCHAR(45) NOT NULL,
PRIMARY KEY(user_id)
);
CREATE TABLE user_profiles(
user_id VARCHAR(45) NOT NULL,
user_bio VARCHAR(45) NOT NULL,
homepage VARCHAR(50) NOT NULL
);
ここでは、両方のテーブルを作成しました。 これで、次の方法で両方のテーブルにデータを一度に挿入できます。
user_profiles.user_id
と users.user_id
の値は同じです。
コード例:
BEGIN;
INSERT INTO users (user_id,user_name, user_password)
VALUES (2,'username2', 'userpassword2');
SELECT @UserID := MAX(user_id) FROM users;
INSERT INTO user_profiles (user_id, user_bio, homepage)
VALUES(@UserID,'this is bio for username2', 'http://www.username2.com');
COMMIT;
2つのレコードを追加し、SELECT
ステートメントを使用して結果を確認します。
出力 (users
テーブル用):
+---------+-----------+---------------+
| user_id | user_name | user_password |
+---------+-----------+---------------+
| 1 | username1 | userpassword1 |
| 2 | username2 | userpassword2 |
+---------+-----------+---------------+
2 rows in set (0.03 sec)
出力 (user_profiles
の場合):
+---------+---------------------------+--------------------------+
| user_id | user_bio | homepage |
+---------+---------------------------+--------------------------+
| 1 | this is bio for username1 | http://www.username1.com |
| 2 | this is bio for username2 | http://www.username2.com |
+---------+---------------------------+--------------------------+
2 rows in set (0.00 sec)
または、時間と労力を節約するために、次のように ストアド プロシージャ を作成することもできます。
コード例:
DELIMITER ;;
CREATE PROCEDURE InsertALL()
BEGIN
INSERT INTO users (user_id,user_name, user_password)
VALUES (3,'username3', 'userpassword3');
SELECT @UserID := MAX(user_id) FROM users;
INSERT INTO user_profiles (user_id, user_bio, homepage)
VALUES(@UserID,'this is bio for username3', 'http://www.username3.com');
END ;;
DELIMITER ;
著者: Mehvish Ashiq