SQL Server 2005: Efficiently Updating Multiple Tables
SQL Server 2005 doesn't directly support updating multiple tables within a single statement. However, two effective strategies achieve this: transactions and batch updates.
Method 1: Transactional Updates
Transactions ensure atomicity; all updates succeed or none do. A failed update rolls back all changes. Use BEGIN TRANSACTION
and COMMIT
to manage this:
<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>
(Note: The original example used implicit joins. This revised example uses explicit INNER JOIN
for clarity and better readability.)
Method 2: Batch Updates
Batch updates execute multiple statements in a single database call, potentially boosting performance. Use the GO
statement as a delimiter:
<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>
The GO
command separates the updates into a single batch for execution. Remember that GO
is a client-side command, not part of standard SQL. Its effect depends on your SQL client tool.
Choose the method that best suits your needs. Transactions guarantee data integrity, while batch updates can offer performance advantages.
The above is the detailed content of How Can I Update Multiple Tables in a Single SQL Server 2005 Statement?. For more information, please follow other related articles on the PHP Chinese website!