Права пользователя для создания FK

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
kadr
Сообщения: 6
Зарегистрирован: 29 окт 2009, 00:37

Права пользователя для создания FK

Сообщение kadr » 30 окт 2010, 00:27

Здравствуйте
Имеем 2 таблицы TYPE$74 и SYS_CLIENTS
Имеем 2 пользователя SYSDBA и ADMIN

права на доступ к таблицам

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

GRANT ALL ON TYPE$74 TO "ADMIN" WITH GRANT OPTION;
GRANT ALL ON SYS_CLIENTS TO "ADMIN" WITH GRANT OPTION;
при выполнении скрипта

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

alter table TYPE$74 add constraint FK_TYPE$74_ID_CLIENT
foreign key (ID_CLIENT)
references SYS_CLIENTS(GUID_ID)
on delete CASCADE
on update CASCADE;
Получаем ошибку

This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
no permission for control access to TABLE SYS_CLIENTS.

Получается что создать FK можно только под SYSDBA или с ролью RDB$ADMIN?

Сервер FB 2.5.26074
Windows 7
Все выполняется на локальной машине

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Re: Права пользователя для создания FK

Сообщение dimitr » 02 ноя 2010, 23:05

создавать ограничения и триггеры имеет право владелец таблицы (помимо sysdba/rdb$admin). Никакими грантами это право переназначить нельзя.

kadr
Сообщения: 6
Зарегистрирован: 29 окт 2009, 00:37

Re: Права пользователя для создания FK

Сообщение kadr » 05 ноя 2010, 10:38

А как же право REFERENCES?
Interbase Datadef page 201
REFERENCES Reference a primary key with a foreign key
Мир Interbase стр 366
REFERENCES (это право дает пользователю возможность создавать ограничения внешнего ключа FOREIGN KEY на данную таблицу)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Права пользователя для создания FK

Сообщение kdv » 08 ноя 2010, 17:18

в Мир ИБ фигня написана. REFERENCES - это право ссылаться на таблицу в ЗНАЧЕНИИ столбца, по которому есть FK, но не право создавать FK.
REFERENCES относится к DML, т.е. туда же, где и SELECT, INSERT, UPDATE, EXECUTE. Создание FK, это уже DDL. На его создание, модификацию и удаление есть права только у SYSDBA и у владельца базы (OWNER).

Ответить