在 T-SQL 中进行更新时向用户显示结果之前和之后
Show user before and after results when doing an update in T-SQL
我有一个 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;
所以我想对于上面的每个 table 更新,向用户显示更新前后的值,即向用户显示一个包含两行的 table 结果,第一行对应更新前的值和第二个对应更新后的值。
那么怎么做呢?
您可以使用 inserted
和 deleted
table 来获取之前和之后的状态,如下所示:
UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN;
OUTPUT
deleted.*, inserted.*;
您可以将 OUTPUT
子句的结果写入临时 table 或 table 变量,然后 select 来自源和目标的列 table 使用 union all 作为 2 行,如演示中所示。
我有一个 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;
所以我想对于上面的每个 table 更新,向用户显示更新前后的值,即向用户显示一个包含两行的 table 结果,第一行对应更新前的值和第二个对应更新后的值。
那么怎么做呢?
您可以使用 inserted
和 deleted
table 来获取之前和之后的状态,如下所示:
UPDATE TABLE1 SET column01 = value01, column02 = value02, ..., columnN = valueN;
OUTPUT
deleted.*, inserted.*;
您可以将 OUTPUT
子句的结果写入临时 table 或 table 变量,然后 select 来自源和目标的列 table 使用 union all 作为 2 行,如演示中所示。