确定SQL触发器中的旧主键

kei*_*ith 5 sql-server triggers sql-server-2000

我已经在某个地方做到了这一点我确定了!

我有一个SQL Server 2000表,我需要记录更新字段的更改并插入到第二个Logging表中.我正在使用的结构的简化版本如下:

MainTable
ID varchar(10) PRIMARY KEY
DESCRIPTION varchar(50)

LogTable
OLDID varchar(10)
NEWID varchar(10)
Run Code Online (Sandbox Code Playgroud)

对于任何其他领域,这样的事情会很有效:

Select i.DESCRIPTION As New, d.DESCRIPTION As Old 
From Inserted i
LEFT JOIN Deleted d On i.ID=d.ID
Run Code Online (Sandbox Code Playgroud)

...但显然如果ID被更改,连接将失败.

我不能修改表格,我在这个数据库中唯一的功能是创建一个触发器.

或者有人可以教我时间旅行,我会回到过去然后问自己我是怎么做到的?干杯:)


编辑:

我想我需要在这里澄清一些事情.这实际上不是我的数据库,它是一个我几乎无法控制的预先存在的系统,除了编写这个触发器.

我的问题是,如果更改了主键,我该如何检索旧主键.我不需要被告知我不应该更改主键或追加外键等.这不是我的问题:)

Chr*_* KL 2

是否可以假设触发器中提供给您的 INSERTED 和 DELETED 表保证具有相同的顺序?