ホームページ >データベース >mysql チュートリアル >複数のデータベーステーブルにデータを挿入する場合、トランザクションはどのようにしてデータの整合性を確保できますか?
トランザクションを使用した複数テーブルのデータ挿入
リレーショナル データベースでは、多くの場合、複数のテーブルにデータを挿入する必要があります。 単一のクエリではこれを直接処理できませんが、トランザクションは堅牢なソリューションを提供します。
トランザクションアプローチ
データベース トランザクションは、一連の操作を単一のアトミック単位として扱います。 トランザクション内のいずれかの操作が失敗した場合、一連の操作全体が元に戻され (ロールバックされ)、データの整合性が維持されます。
トランザクション的に複数のテーブルにデータを挿入するには:
<code class="language-sql">START TRANSACTION; -- Insert statement for table 1 -- Insert statement for table 2 COMMIT;</code>
INSERT
ステートメントを START TRANSACTION; ... COMMIT;
ブロック内で囲むことで、データの一貫性が保証されます。 すべての挿入が成功するか、何も行われず、データ関係を破壊する可能性のある部分的な更新が防止されます。
具体例
names
テーブルと phones
テーブルにデータを挿入することを考えてみましょう (元の質問と同様)。トランザクション的なアプローチは次のようになります:
<code class="language-sql">START TRANSACTION; INSERT INTO names (id, first_name, last_name) VALUES (1, 'John', 'Doe'); INSERT INTO phones (number, name_id) VALUES ('123-456-7890', 1); COMMIT;</code>
これにより、名前と関連する電話番号の両方が挿入されるか、どちらも挿入されず、参照整合性が維持されます。
重要な注意: トランザクション管理の正確な構文 (START TRANSACTION
、COMMIT
、場合によっては ROLLBACK
) は、特定のデータベース システム (MySQL、PostgreSQL、SQL Server など) によって若干異なる場合があります。 。)。正確なコマンドについては、データベースのドキュメントを参照してください。
以上が複数のデータベーステーブルにデータを挿入する場合、トランザクションはどのようにしてデータの整合性を確保できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。