Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在T-SQL中执行更新时显示用户前后结果_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 在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

我有一个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, ..., columnN = valueN;
因此,对于上面的每个表更新,我希望向用户显示更新前后的值,也就是说,向用户显示一个由两行组成的表结果,第一行对应于更新前的值,第二行对应于更新后的值


那么如何做到这一点呢?

您可以使用
插入的
删除的
表来获取前后状态,如下所示:

UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN;
OUTPUT
deleted.*, inserted.*;
您可以将
OUTPUT
子句中的结果写入临时表或表变量,然后使用union all将源表和目标表中的列选择为两行,如演示中所示


但它是只返回更新的列还是返回更新的行的所有列?我只想更新该行的列。如果您知道要更新的内容,可以只包含这些列。玩一下演示,感受一下。好的,太好了,但不是连在同一行中,而是不可能把它们放在不同的行中吗?@user1624552我已经更新了我的答案。请看新的演示链接。