Нужна помощь в написании триггера, чтобы только определенные пользователи могли обновлять / удалять на основе JOINED-таблиц - PullRequest
0 голосов
/ 21 октября 2011

У меня есть две таблицы, давайте просто назовем их A & B, которые можно объединить с помощью внешнего ключа. В таблице A есть поле BIT (и только в таблице A ), и после установки значения TRUE я хочу, чтобы ТОЛЬКО пользователи определенного членства в группе могли обновлять / удалять записи.

Для таблицы А я использовал следующее:

CREATE trigger [trigger_TableA] on [TableA] after update, delete
as
begin
set nocount on
 if exists (select 1 from deleted d where d.[BitFlag] = 1)
     and exists (select 1 from inserted i where i.[BitFlag] = 1)
     and 1 != isnull(IS_MEMBER('GROUP_NAME'), 0)
 begin
     RAISERROR('Only members of GROUP_NAME are allowed to update or delete.', 16, 1)
     ROLLBACK TRAN
  RETURN
 end
end

Как бы я изменил вышеупомянутое для таблицы, чтобы быть Триггером для Таблицы B, который включает проверку BitFlag в Таблице A?

Спасибо!

1 Ответ

1 голос
/ 21 октября 2011
 if exists (select 1 from deleted d INNER JOIN tableA a on d.? = a.? where a.[BitFlag] = 1) 
     and exists (select 1 from inserted i INNER JOIN tableA a on i.? = a.? where a.[BitFlag] = 1) 

Конечно, вам придется заменить? На любое поле, к которому нужно присоединиться.

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