ホームページ >データベース >mysql チュートリアル >単一の SQL Server 2005 ステートメントで複数のテーブルを更新するにはどうすればよいですか?

単一の SQL Server 2005 ステートメントで複数のテーブルを更新するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-20 14:54:12444ブラウズ

How Can I Update Multiple Tables in a Single SQL Server 2005 Statement?

SQL Server 2005: 複数のテーブルを効率的に更新する

SQL Server 2005 は、単一のステートメント内で複数のテーブルを更新することを直接サポートしていません。 ただし、これを達成するには、トランザクションとバッチ更新という 2 つの効果的な戦略を使用します。

方法 1: トランザクションの更新

トランザクションは原子性を保証します。すべての更新が成功するか、何も成功しません。 更新に失敗すると、すべての変更がロールバックされます。 これを管理するには、BEGIN TRANSACTIONCOMMIT を使用します:

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。