Вернуть серийный номер закрытого ключа записи таблицы, измененной после вызова Trigger? - PullRequest
1 голос
/ 14 июля 2020

На SQL сервере, как я могу вернуть серийный номер закрытого ключа записи таблицы, измененный после вызова триггера?

Если я внесу изменения в таблицу (INSERT, UPDATE, DELETE), Мне понадобится первичный ключ записи, изменение которой вызывает вызов триггера. Как я могу получить это в программе триггера?

Transact SQl код хранимой процедуры сейчас (это нормально, но я не знаю, как действовать):

CREATE TRIGGER dbo.TOOLRIGHTS_RECCOUNT 
  ON TOOLRIGHTS FOR INSERT, UPDATE, DELETE AS
BEGIN
   DECLARE @Update int
   SET @Update = (SELECT COUNT(*) FROM TOOLRIGHTS)
   UPDATE COUNTINGTABLE SET T_RECORDCOUNT = @Update WHERE T_TABLENAME = 'TOOLRIGHTS'
END
GO

1 Ответ

0 голосов
/ 21 июля 2020

Допустим, у вас есть таблица dbo.Users с первичным ключом (Id) и другими столбцами, вы можете добавить триггер для записи строк, которые были изменены:

CREATE TRIGGER [dbo].[UpdateCounts]
ON [dbo].[Users] FOR INSERT, UPDATE, DELETE
AS
BEGIN

    INSERT INTO dbo.Log (AffectedId)
    SELECT Inserted.Id FROM Inserted    
    UNION
    SELECT Deleted.Id FROM Deleted
END
GO

Добавленные строки будут есть запись в таблице «Вставлено», обновленные строки будут иметь запись как в таблице «Вставлено», так и в таблице «Удалено» (отсюда объединение для удаления дубликатов), а удаленные строки будут иметь запись в таблице «Удалено».

В В моем примере я просто записываю эти идентификаторы в таблицу dbo.Logs, но, надеюсь, вы поняли идею.

...