Относительно триггера удаления SQL Server - PullRequest
3 голосов
/ 22 апреля 2011

Я хочу записать имя пользователя, который удаляет строку, когда выполняется действие удаления, тогда хранимая процедура удаляет строку из таблицы. Мы предоставляем все необходимые параметры для хранимой процедуры, а также имя пользователя из внешнего интерфейса, который удаляет данные.

В основном я хочу захватить имя пользователя, который удаляется из хранимой процедуры из триггера удаления. Но это невозможно. Мы можем сделать одну вещь, что перед удалением записи мы можем поместить имя пользователя во временную таблицу и получить это имя из триггера. Но есть одна проблема, что одновременно два пользователя могут удалить две разные строки. Так что будет лучшим решением? Я не хочу использовать теневые таблицы. пожалуйста, обсудите. спасибо

Ответы [ 2 ]

4 голосов
/ 22 апреля 2011

Вы в основном спрашиваете, как передать параметр в триггер?

Вы можете использовать set CONTEXT_INFO внутри процедуры и прочитать это внутри триггера.

DECLARE @name VARBINARY(128) 

SET @name = CAST('Martin' AS VARBINARY(128));


SET CONTEXT_INFO @name /*Set it*/

SELECT CAST(CONTEXT_INFO() AS VARCHAR(128)) /*Read it*/


SET CONTEXT_INFO 0x /*Reset it*/
2 голосов
/ 22 апреля 2011

Если у вас уже есть хранимая процедура, зачем беспокоиться о триггерах?Иметь журнал хранимых процедур, который удалил строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...