Есть ли какая-то конкретная причина, по которой вы хотите использовать триггеры?
Вы можете просто удалить разрешение DELETE у пользователей, которых хотите ограничить.Взгляните на раздел «Разрешения» здесь: http://msdn.microsoft.com/en-us/library/ms189835.aspx
РЕДАКТИРОВАТЬ: Поскольку вы говорите, что хотите использовать триггеры (но я действительно думаю, что вы должны пересмотреть), вы можете создатьтаблица, такая как:
CREATE TABLE Restricted_Users
(
user_name VARCHAR(40) PRIMARY_KEY -- Use a size appropriate to your requirements
)
Создать INSTEAD OF DELETE
срабатывает на всех ваших таблицах (это будет рутина), которая проверяет наличие USER_NAME()
в таблице Restricted_Users
иесли они EXIST
, вы можете вызвать RAISERROR
, чтобы вызвать откат транзакции и отобразить сообщение для пользователя.
Помните, что вам нужно будет поддерживать эти триггеры для всех новых таблиц, добавленных в базу данных, кака также ведение списка пользователей в таблице Restricted_Users
при каждом добавлении / удалении пользователей из базы данных.
Было бы намного проще использовать систему разрешений, доступную в SQL Server.(это то, для чего он предназначен) использование ролей с соответствующими разрешениями, установленными для таблиц.Затем при добавлении новых пользователей вам всего лишь нужно назначить им соответствующую роль, и разрешения на удаление будут обработаны для вас.