У меня есть две таблицы в моем приложении (я пытаюсь создать трекер ошибок). Один из них, в который я могу добавить запись/вопрос, и тот, который относится к истории проблемы.Вставить триггер на SQL Server для истории изменений/аудита
Итак, вторая (Bugs_Shadow) таблица создаст новую запись вместе с первой (Ошибки), а затем я могу обновить проблему в таблице 1, когда кто-то попытался исправить. При щелчке по обновлению я хочу, чтобы он добавлял строку обновления в целом во вторую таблицу, но также сохранял исходную запись. Таким образом, всякий раз, когда происходит изменение, он создает новую запись в таблице Bugs_Shadow. Надеюсь это имеет смысл?
Я создал этот триггер:
CREATE TRIGGER [tr_Bugs_Insert]
ON [dbo].[Bugs]
AFTER UPDATE, INSERT
AS
BEGIN
INSERT INTO Bugs_Shadow (BugID, [User], Date, Subject, Description, [Source Code], [Current State])
SELECT BugID, [User], Date, Subject, Description, [Source Code], [Current State]
FROM Bugs
END
GO
Он работает так далеко, чтобы создать идентичную запись во 2-й таблице, но когда я обновить запись в 1-й таблице, он делает то же самое, во 2-й один, тогда как я хочу, чтобы он создал новую запись, которая идентична, кроме изменений, сделанных пользователем.
Надеюсь, там есть какая-то помощь. Это моя первая попытка триггеров, и мне потребовалось некоторое время, чтобы добраться до этой стадии.
Благодаря
Спасибо за быстрый ответ. Однако с этим я получаю следующую ошибку: SQL80001: неправильный синтаксис рядом с «ПЕРЕД». Есть идеи? –
Ожидается, что «ПОСЛЕ», а не «ПЕРЕД» –
Мой плохой, MS SQL не поддерживает триггеры BEFORE. См. Мой обновленный ответ – Kenneth