Можно ли написать триггер, который принимает внешние параметры?Как создать триггеры, которые принимают внешние параметры в SQL Server?
Основная причина этого - ограничить подключение к базе данных только с помощью ONE пользователя базы данных. Теперь я разрабатываю приложение базы данных и создаю триггеры для каждой отдельной таблицы для хранения истории.
При хранении данных истории, я хочу, чтобы сохранить Application Имя пользователя кто совершил Insert
, Update
или Delete
. Я думал использовать User_Name()
, но узнал, что он возвращает пользователя базы данных, NOT пользователь приложения.
Поэтому я ищу некоторые предложения по созданию триггеров с внешними параметрами, чтобы я мог передать идентификатор пользователя приложения этому триггеру. Думаю, я четко объяснил свои потребности. Заранее спасибо !
Редактировать
Внешний параметр должен быть что-то подобное параметров хранимой процедуры, где мы можем передать значение,
Edit2
Может быть мое описание не является достаточно ясным. Поэтому я даю вам пример.
Веб-приложение, которое я разрабатываю, относится к учетной записи. Таким образом, чтобы отслеживать изменения данных в необходимом. Например, персонал Счета может изменить информацию о зарплате и комиссии сотрудника. Если неправильная информация вводится/обновляется, общий финансовый результат будет иметь большое негативное влияние. Теперь в системе вход пользователя в систему с использованием пароля userid &, а затем выполните некоторые изменения в информации о сотрудниках. На этом этапе я хочу сохранить трек, который изменил информацию о сотрудниках, когда были сделаны изменения и значения до того, как изменение было выполнено, и значение после завершения изменения. Так что в будущем, если что-то пойдет не так, я могу узнать пользователя, который сделал ошибку с PROOF.
Не обязательно это должно быть сделано с помощью триггера, но любая другая альтернатива также приветствуется.
Что такое идентификатор пользователя приложения? Это логин SQL, учетная запись Windows или что-то еще? Возвращает ли SYSTEM_USER то, что вы хотите или нет? – Pondlife
Откуда у вас пользователь приложения? Почему вы не можете найти пользователя приложения внутри триггера? – adrianm
Возможный дубликат [Передача переменной в триггер] (http://stackoverflow.com/questions/2646547/pass-a-variable-into-a-trigger) попробуйте использовать 'CONTEXT_INFO()', см. Ссылку для ответов используя это. –