у меня есть триггер, работающий с таблицей, которая не возвращает набор результатов:
ALTER TRIGGER [dbo].[LogDelete_Nodes] ON [dbo].[Nodes]
FOR DELETE
AS
BEGIN
SET NOCOUNT ON;
/* Load the saved context info UserGUID */
DECLARE @SavedUserGUID uniqueidentifier
SET @SavedUserGUID = (SELECT CAST(context_info as uniqueidentifier)
FROM master.dbo.sysprocesses
WHERE spid = @@SPID)
--remaining trigger contents deleted to provide simple example
END;
Удаление строк из таблицы Nodes
приведет к ошибке:
Сообщение 524, Уровень 16, Состояние 1, Процедура LogDelete_Node, Строка 10
Триггер возвратил набор результатов, и параметр сервера «Запрещать результаты от триггеров» имеет значение true.
Как сделать триггер, который не возвращает набор результатов, не возвращает набор результатов?
Примечание: Первоначально был определен триггер, в котором для установки переменной использовался неизменный синтаксис:
SELECT @SavedUserGUID = CAST(context_info as uniqueidentifier)
FROM master.dbo.sysprocesses
WHERE spid = @@SPID
и все равно выдает ту же ошибку.
SELECT @@version
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59
Copyright (C) 1988-2005 Microsoft Corporation
Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
Ответ следовать
Мы выяснили проблему, когда я составлял этот вопрос. Я все еще собираюсь задать вопрос, так как ответ может оказаться очень полезным для всех, кто имеет эту загадочную проблему.
Смотри также