Как передать временные данные из триггера в хранимую процедуру в SQL Server 2008 - PullRequest
2 голосов
/ 01 марта 2012

У меня есть приложение Windows Forms, таблица Customers и соответствующая таблица в БД (Customer). При редактировании таблицы WinForm и нажатии кнопки сохранения stored procedure выполняет и обновляет таблицу Customer в БД. Когда таблица обновлена, выполняется trigger. Trigger выполняет некоторые stored procedure для ведения журнала и сохранения данных в таблице журнала. Мне нужно передать Environment.UserName в таблицу журнала, не сохраняя ее в Customer таблице, т. Е. Я должен передать ее в окончательную таблицу журнала, но я не могу добавить ее в таблицу Customer как столбец. И я не знаю, как это сделать. Есть ли способ сделать это.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Вы можете сохранить имя пользователя в контексте соединения (закодировать его как varbinary).

    DECLARE @a VARBINARY(128)
    SET @a = CAST('myuser' AS VARBINARY(128))
    SET CONTEXT_INFO @a 

Где @a содержит закодированное имя пользователя.В вашем триггере вы можете получить контекстную информацию с помощью функции CONTEXT_INFO() и декодировать ее в varchar.

    SELECT cast(CONTEXT_INFO() as VARCHAR(128))
1 голос
/ 01 марта 2012

Я не уверен, что передача параметров триггерам - хорошая идея.

Пожалуйста, рассмотрите возможность использования функции suser_sname() в теле триггера для распознавания пользователя.

Другая опция - это перемещение логики из триггера в хранимую процедуру и передача информации о текущем пользователе в хранимую процедуру.

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