ホームページ >データベース >mysql チュートリアル >単一の SQL Server 2005 ステートメントで複数のテーブルを更新するにはどうすればよいですか?
SQL Server 2005: 複数のテーブルを効率的に更新する
SQL Server 2005 は、単一のステートメント内で複数のテーブルを更新することを直接サポートしていません。 ただし、これを達成するには、トランザクションとバッチ更新という 2 つの効果的な戦略を使用します。
方法 1: トランザクションの更新
トランザクションは原子性を保証します。すべての更新が成功するか、何も成功しません。 更新に失敗すると、すべての変更がロールバックされます。 これを管理するには、BEGIN TRANSACTION
と COMMIT
を使用します:
<code class="language-sql">BEGIN TRANSACTION; UPDATE Table1 SET Table1.LastName = 'DR. XXXXXX' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; UPDATE Table2 SET Table2.WAprrs = 'start,stop' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; COMMIT;</code>
(注: 元の例では暗黙的な結合が使用されていました。この改訂された例では、明確さと読みやすさのために明示的な INNER JOIN
を使用しています。)
方法 2: バッチ更新
バッチ更新では、1 回のデータベース呼び出しで複数のステートメントが実行され、パフォーマンスが向上する可能性があります。 GO
ステートメントを区切り文字として使用します:
<code class="language-sql">BEGIN TRANSACTION; UPDATE Table1 SET Table1.LastName = 'DR. XXXXXX' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; GO UPDATE Table2 SET Table2.WAprrs = 'start,stop' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; COMMIT;</code>
GO
コマンドは、更新を単一のバッチに分割して実行します。 GO
はクライアント側のコマンドであり、標準 SQL の一部ではないことに注意してください。 その効果は SQL クライアント ツールによって異なります。
ニーズに最も適した方法を選択してください。トランザクションはデータの整合性を保証し、バッチ更新はパフォーマンス上の利点をもたらします。
以上が単一の SQL Server 2005 ステートメントで複数のテーブルを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。