Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.
Модераторы: kdv, Alexey Kovyazin
-
kadr
- Сообщения: 6
- Зарегистрирован: 29 окт 2009, 00:37
Сообщение
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
Сообщение
dimitr » 02 ноя 2010, 23:05
создавать ограничения и триггеры имеет право владелец таблицы (помимо sysdba/rdb$admin). Никакими грантами это право переназначить нельзя.
-
kadr
- Сообщения: 6
- Зарегистрирован: 29 окт 2009, 00:37
Сообщение
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
Сообщение
kdv » 08 ноя 2010, 17:18
в Мир ИБ фигня написана. REFERENCES - это право ссылаться на таблицу в ЗНАЧЕНИИ столбца, по которому есть FK, но не право создавать FK.
REFERENCES относится к DML, т.е. туда же, где и SELECT, INSERT, UPDATE, EXECUTE. Создание FK, это уже DDL. На его создание, модификацию и удаление есть права только у SYSDBA и у владельца базы (OWNER).