【发布时间】:2012-06-03 12:20:07
【问题描述】:
假设我有一个包含一列(主键)的表,并且我在该表上设置了触发器来记录任何更改。现在,当在 Deleted 中更新一行(主键)时,我有旧的主值,而在 Inserted 中我有新的主值。在多行更新中,如何将旧值(在 Deleted 中)绑定到新值(在 Inserted 中)?
例如:
myTable 一列(也是主键):
PK
---
1
2
现在我更新 1 到 4 和 2 到 3
Deleted
-------
1
2
Inserted
--------
3
4
如何在具有三列的审计表中记录这些更改:PK、old_value、new_value
Audit Table
-----------
PK | old_value | new_value
1 | 1 | 4
2 | 2 | 3
在 oracle 中我们有新旧值,但在 sql server 中没有。
【问题讨论】:
-
您可以查看this SO article。
-
SQL Server 没有行触发器,也没有在
inserted、deleted表中提供任何类型的逻辑行标识符,可用于代替 PK 加入,因此有除了链接问题中@gbn 的答案中的技术之外,没有办法做到这一点。 -
如果您可以改变看待 PK 变化的方式。将它们记录为删除和插入。
标签: sql-server triggers