Вы можете использовать временную таблицу.
Мой сценарий заключается в том, что когда данные обновляются с помощью известного процесса, он добавляет примечание к таблице аудита, в котором говорится, что «это было сделано специально».
Когда запускается этот процесс, он вставляет одно значение в #auditnote (это временная таблица, которую я создаю на лету).
Триггер проверяет эту таблицу. Если он существует, он снимает записку и помещает ее в таблицу аудита.
Если это не так, то это касается бизнеса.
Я смотрел на использование переменной @@, но хитрость в том, чтобы определить, существует ли переменная. Я не вижу пути.
Пример:
Хранимая процедура:
SELECT 'Alrighty Then' AS NOTE INTO #AuditNote
Trigger:
DECLARE @noteExists BIT
DECLARE @note NVARCHAR(500)
IF OBJECT_ID('tempdb..#auditnote') IS NOT NULL
BEGIN
SELECT
TOP (1)
@noteExists = 1,
@note = Note
FROM
#auditNote
END ELSE BEGIN
SELECT @noteExists = 0
END
-- do something with the note
IF @noteExists = 1
BEGIN
DROP TABLE #AuditNotes
END
Я использую @noteExists вместо проверки на ноль, потому что кто-то может вставить ноль в качестве примечания, поэтому мы не знаем, означает ли ноль TABLE, НЕ СУЩЕСТВУЮЩИЙ или NOTE NULL.