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 サイトの他の関連記事を参照してください。