Sql server 2008 在T-SQL中执行更新时显示用户前后结果
我有一个T-SQL脚本,在此脚本中我执行了几个典型的更新:Sql server 2008 在T-SQL中执行更新时显示用户前后结果,sql-server-2008,tsql,Sql Server 2008,Tsql,我有一个T-SQL脚本,在此脚本中我执行了几个典型的更新: UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN; UPDATE TABLE2 SET column01 = value01, column02 = value02, ..., columnN = valueN; UPDATE TABLE3 SET column01 = value01, column02 = value02
UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN;
UPDATE TABLE2 SET column01 = value01, column02 = value02, ..., columnN = valueN;
UPDATE TABLE3 SET column01 = value01, column02 = value02, ..., columnN = valueN;
因此,对于上面的每个表更新,我希望向用户显示更新前后的值,也就是说,向用户显示一个由两行组成的表结果,第一行对应于更新前的值,第二行对应于更新后的值
那么如何做到这一点呢?您可以使用
插入的和删除的表来获取前后状态,如下所示:
UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN;
OUTPUT
deleted.*, inserted.*;
您可以将OUTPUT
子句中的结果写入临时表或表变量,然后使用union all将源表和目标表中的列选择为两行,如演示中所示
但它是只返回更新的列还是返回更新的行的所有列?我只想更新该行的列。如果您知道要更新的内容,可以只包含这些列。玩一下演示,感受一下。好的,太好了,但不是连在同一行中,而是不可能把它们放在不同的行中吗?@user1624552我已经更新了我的答案。请看新的演示链接。