Страница 1 из 1

Права в триггерах

Добавлено: 21 май 2011, 06:44
AndreyTarasov
Добрый день

Столкнулся с следующей проблемой

Есть робот, который выполняет действия, которые планируются пользователем (в частности отправка уведомлений по email)
Робот подключается с ограниченными правами и соответственно имеет права только там где делает отметки
После установки отметки производится изменение одного поля в 2х таблицах, в зависимости от условий.

При отработке оказалось что роботу потребовались права на другие таблицы, которые присутствуют в триггерах.
Даже если я в начале триггеров обновления ставлю "exit" - это ничего не решает, как будто триггеры срабатывают полностью и обрабатывают прочие таблицы

Роботу требуется всего-то изменить 2 поля, и я не хочу давать роботу права на все таблицы на которые ссылаются триггеры причем не только в этих таблицах, но и далее по ступеням

Как можно решить такую проблему?

Сервер: FireBird-2.1.3.18185

Re: Права в триггерах

Добавлено: 21 май 2011, 11:39
kdv
права в триггерах и процедурах проверяются для ВСЕХ используемых в них объектах, ДО выполнения триггера и процедуры.
не даете права роботу, дайте права триггеру.

Код: Выделить всё

GRANT <privileges> ON [TABLE] {tablename | viewname}
TO {<object> | <userlist> | GROUP UNIX_group}
| EXECUTE ON PROCEDURE procname TO {<object> | <userlist>}
| <role_granted> TO {PUBLIC | <role_grantee_list>};
<privileges> = {ALL [PRIVILEGES] | <privilege_list>}
<privilege_list> = SELECT
| DELETE
| INSERT
| UPDATE [(col [, col …])]
| REFERENCES [(col [, col …])]
[, <privilege_list> …]
<object> = PROCEDURE procname
| TRIGGER trigname
| VIEW viewname
| PUBLIC
[, <object> …]
<userlist> = [USER] username
| rolename
| Unix_user}
[, <userlist> …]
[WITH GRANT OPTION]
<role_granted> = rolename [, rolename …]

Re: Права в триггерах

Добавлено: 21 май 2011, 14:50
AndreyTarasov
kdv писал(а):права в триггерах и процедурах проверяются для ВСЕХ используемых в них объектах, ДО выполнения триггера и процедуры.
не даете права роботу, дайте права триггеру.
я тоже думал что так надо сделать и ради эксперимента, дал все права всем триггерам, на первую таблицу на которую ругаются,
никакого эффекта..... "This user does not have privilege...."

уже не знаю что и думать...

Re: Права в триггерах

Добавлено: 24 май 2011, 09:13
AndreyTarasov
Вроде решил проблему, но мне кажется косячно..

Оказалось что если триггер использует таблицу только для обновления, то ему зачем-то требуются права на select...
добавил всем обновляющим триггерам права на select и все заработало

странно...

Re: Права в триггерах

Добавлено: 24 май 2011, 20:42
dimitr

Re: Права в триггерах

Добавлено: 25 май 2011, 07:01
AndreyTarasov
dimitr писал(а):баян, однако: http://tracker.firebirdsql.org/browse/CORE-136
О как... спасибо :)