【发布时间】:2015-05-21 05:57:04
【问题描述】:
目前,我们通过以下方式跟踪数据变化:
为我们正在跟踪的表创建一个重复表,并添加一些额外的列:
所以,主表(一个例子)
CREATE TABLE person
(
personId INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
personName VARCHAR(100) NOT NULL,
personAge INT NOT NULL,
CreateUserID INT NOT NULL,
CreateDate DATETIME NOT NULL,
UpdateUserID INT NULL,
UpdateDate DATETIME NULL
)
然后,保存更新的表。
CREATE TABLE person_history
(
person_history_id INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
actionType CHAR(1) NOT NULL,
personId INT NOT NULL,
personName VARCHAR(100) NOT NULL,
personAge INT NOT NULL,
CreateUserID INT NOT NULL,
CreateDate DATETIME NOT NULL,
UpdateUserID INT NULL,
UpdateDate DATETIME NULL
)
然后我们在主表上为更新创建一个触发器,并为插入创建一个触发器。
如果是更新,则 ActionType 为 U,如果是插入,则为 I。然后我们只需将所有列复制到 History 表中。
这在 SQL server 2008 R2 上运行,另外,一个版本在 Azure 上运行。
管理员要求我们不要使用 SQL Server 的更改跟踪。我什至不确定 Azure 中是否自动提供更改跟踪。我从未使用过它,但是……值得调查并尝试出售管理员吗?
因为,我需要能够创建行来显示历史记录:
[User] inserted a new person on [Date].
[User] change the Age from 27 to 29 on the [Date]
[User] change the Age from 29 to 32 and the Name from James to Peter on the [Date]
使用触发器和历史记录表是一种合适且推荐的方式,还是可以选择使用更改跟踪? (2008 R2 和 Azure)
【问题讨论】:
标签: sql-server sql-server-2008 azure