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

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

Mary-Kate Olsen
リリース: 2024-12-17 11:46:25
オリジナル
537 人が閲覧しました

How to Insert Data into Multiple MySQL Tables Simultaneously?

MySQL の複数のテーブルへの挿入: データベースの正規化

MySQL では、複数のテーブルへのデータの同時挿入は直接サポートされていません。ただし、この機能を実現する別のアプローチもあります。

トランザクションの使用

テーブル間のデータの一貫性を確保するには、トランザクションを使用することをお勧めします。トランザクションは一連のクエリを 1 つの単位としてカプセル化し、すべてのクエリが一緒に成功または失敗することを保証します。

トランザクションを使用した例を次に示します。

BEGIN;
INSERT INTO users (username, password) VALUES('test', 'test');
INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');
COMMIT;
ログイン後にコピー

自動インクリメントの取得値

ユーザーからの自動インクリメント ID を挿入します。テーブルをプロファイル テーブルに追加するには、LAST_INSERT_ID() 関数を使用できます。ただし、後続の挿入ステートメントが独自の自動インクリメント列を持つテーブルに挿入される場合、LAST_INSERT_ID() 値はそのテーブルの値に更新されます。

元の LAST_INSERT_ID() 値を保存するには、トランザクション内のカスタム変数にそれを入れます。

MySQL の使用変数:

INSERT ...
SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
INSERT INTO table2 (@mysql_variable_here, ...);
ログイン後にコピー

言語変数の使用:

// PHP example
$mysqli->query("INSERT INTO table1 ...");
$userid = $mysqli->insert_id;
$mysqli->query("INSERT INTO table2 ($userid, ...)");
ログイン後にコピー

注意

複数のテーブルに挿入する場合は、データベースの一貫性を考慮してください。中断された場合、トランザクションはすべてのクエリが完全に実行されるか、まったく実行されないかを確認します。トランザクションがないと、部分的な挿入により不整合が生じる可能性があります。

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

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