捕获两列的更改 - SQL Server
创始人
2024-12-25 04:30:10
0

在SQL Server中,可以通过使用触发器来捕获两列的更改。下面是一个包含代码示例的解决方法:

首先,创建一个表来存储更改的历史记录。该表将记录更改前后的值以及更改发生的时间。例如,可以创建一个名为ChangeHistory的表,包含以下列:

CREATE TABLE ChangeHistory (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    TableName VARCHAR(100),
    ColumnName VARCHAR(100),
    OldValue NVARCHAR(MAX),
    NewValue NVARCHAR(MAX),
    ChangeDate DATETIME
)

接下来,创建一个触发器在更改目标表中的两列发生更改时被触发。例如,如果目标表名为YourTable,两列分别为Column1Column2,则可以创建以下触发器:

CREATE TRIGGER CaptureChanges
ON YourTable
AFTER UPDATE
AS
BEGIN
    IF UPDATE(Column1) OR UPDATE(Column2)
    BEGIN
        INSERT INTO ChangeHistory (TableName, ColumnName, OldValue, NewValue, ChangeDate)
        SELECT 
            'YourTable',
            CASE
                WHEN UPDATE(Column1) THEN 'Column1'
                WHEN UPDATE(Column2) THEN 'Column2'
            END,
            d.Column1,
            i.Column1,
            GETDATE()
        FROM deleted d
        INNER JOIN inserted i ON d.PrimaryKeyColumn = i.PrimaryKeyColumn -- 用于链接原始值和新值的主键列
        WHERE
            (UPDATE(Column1) AND d.Column1 <> i.Column1) OR
            (UPDATE(Column2) AND d.Column2 <> i.Column2)
    END
END

触发器将在YourTable表的Column1Column2被更新时被触发。它将在ChangeHistory表中插入一条记录,记录更改前后的值以及更改发生的时间。

请注意,上述示例中的触发器假设目标表具有一个主键列,用于将原始值和新值进行匹配。如果目标表没有主键列,您可以根据具体情况将触发器进行修改,以使用其他唯一标识列或组合列来链接原始值和新值。

相关内容

热门资讯

揭秘关于!手机透视辅助器app... 揭秘关于!手机透视辅助器app(辅助挂)wpk模拟器多开(其实有挂)是一款可以让一直输的玩家,快速成...
重大通报!微乐自建房辅助(辅助... 重大通报!微乐自建房辅助(辅助挂)xpoker辅助工具(最初真的有挂);微乐自建房辅助软件透明挂是一...
每日必备!内蒙博乐填大坑辅助(... 您好:内蒙博乐填大坑辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
总算了解!新道游游戏辅助器安装... 总算了解!新道游游戏辅助器安装包(辅助挂)德普之星透视辅助软件下载(确实是真的有挂);新道游游戏辅助...
记者爆料!打哈儿床将作弊(辅助... 记者爆料!打哈儿床将作弊(辅助挂)德扑之心免费透视(从前是真的有挂);1、许多玩家不知道打哈儿床将作...
分享实测!情怀游戏辅助器破解版... 分享实测!情怀游戏辅助器破解版(辅助挂)hhpoker可以控制吗(其实是有挂);情怀游戏辅助器破解版...
一分钟了解!微乐辅助脚本(辅助... 一分钟了解!微乐辅助脚本(辅助挂)wpk透视是真的假的(一直有挂);1.微乐辅助脚本 ai辅助创建新...
一分钟了解!火神辅助免费下载(... 一分钟了解!火神辅助免费下载(辅助挂)wepoker辅助软件价格(往昔真的有挂)是一款可以让一直输的...
必备科技!天蝎辅助(辅助挂)德... 必备科技!天蝎辅助(辅助挂)德扑HHpoker有挂吗(确实是真的有挂);天蝎辅助辅助器中分为三种模型...