跨多个 SQL Server 表同时更新
SQL Server 2005 不支持在单个 SQL 语句中直接更新多个表。但是,您可以通过将 UPDATE 语句包装在事务中来实现跨多个表的原子更新。
让我们用一个例子来说明这一点。 假设我们需要更新 LastName
中的 Table1
和 WAprrs
中的 Table2
,其中 id
列与特定值匹配。 这可以使用以下交易块来完成:
<code class="language-sql">BEGIN TRANSACTION; UPDATE Table1 SET LastName = 'DR. XXXXXX' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; UPDATE Table2 SET WAprrs = 'start,stop' FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.id WHERE T1.id = '011008'; COMMIT TRANSACTION;</code>
记住 COMMIT TRANSACTION
声明是必不可少的,这一点至关重要。 这可确保两个 UPDATE 语句要么一起成功完成,要么同时失败,从而保持数据完整性并防止只有一个更新成功时可能出现的不一致情况。 使用显式 JOIN
语法也比隐式连接更清晰和高效。
以上是如何在单个事务中更新多个 SQL Server 表?的详细内容。更多信息请关注PHP中文网其他相关文章!