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

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

Добавлено: 30 окт 2010, 00:27
kadr
Здравствуйте
Имеем 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
Все выполняется на локальной машине

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

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

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

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

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

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