SQL删除,插入或更新触发器后

时间:2019-03-16 12:03:29

标签: sql-server logging

您能帮我开始这个吗?

我有一个具有这种格式的表:

CREATE TABLE [dbo].[ACS_ARMAZEM]
(
    [ARM_ID] [INT] IDENTITY(20000,1) NOT NULL,
    [ARM_DES] [NVARCHAR](50) NOT NULL,
    [ARM_5_COD_DIG] [NVARCHAR](5) NOT NULL,
    [ARM_SIT] [INT] NOT NULL,
    [ARM_BIZ_TIP] [INT] NOT NULL,
    [ARM_STK_CTRL] [INT] NOT NULL,
    [ARM_DAT_CRI] [DATE] NOT NULL,
)

我需要将所有更改(插入,删除或更新)记录到我拥有的日志表中。

但是我想记录新旧值(即使插入了新行,我也想在旧列中将其记录为null)。

最诚挚的问候,

RL

1 个答案:

答案 0 :(得分:1)

简而言之,您需要使用插入和删除的表。 即。

对于插入/更新:

UPDATE [YourTable]
   SET [YourColumn] = i + 1
OUTPUT deleted.[YourColumn], inserted.[YourColumn] INTO [YourLogTable]
WHERE i = 1;

(在这里,删除将给出旧值,插入将给出新值)

要删除:

DELETE from [YourTable]
OUTPUT deleted.[YourColumn], NULL INTO [YourLogTable]
WHERE i = 2;

当然,您将需要修改语句以与您的日志表结构匹配。 请告诉我是否有帮助。 :)