Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных / БД2012 / Understanding.SQL.doc
Скачиваний:
281
Добавлен:
28.03.2015
Размер:
1.75 Mб
Скачать

Группы привилегий, группы пользователей

Вы не должны ограничивать себя предоставлением одиночной привилегии отдельному пользователю командой GRANT. Списки привилегий или пользователей, отделяемых запятыми, являются совершенно приемлемыми. Stephen может предоставить и SELECT и INSERT в таблице Порядков для Adrian

GRANT SELECT, INSERT ON Orders TO Adrian;

или и для Adrian и для Diane

GRANT SELECT, INSERT ON Orders TO Adrian, Diane;

Когда привилегии и пользователи перечислены таким образом, весь спи- сок привилегий предоставляются всем указанным пользователям. В строгой ANSI интерпретации, вы не можете предоставить привилегии во многих таблицах сразу одной командой, но в некоторых реализациях это ограничение может быть ослаблено, позволяя вам указывать несколько таблиц, отделяя их запятыми, так что бы весь список привилегий мог быть предоставлен для всех указанных таблиц.

Ограничение привилегий на определенные столбцы

Все привилегии объекта используют один тот же синтаксис, кроме команд UPDATE и REGERNCES в которых необязательно указывать имена столбцов. Привилегию UPDATE можно предоставлять наподобие других привилегий:

GRANT UPDATE ON Salespeople TO Diane;

Эта команда позволит Diane изменять значения в любом или во всех столбцах таблицы Продавцов. Однако, если Adrian хочет ограничить Diane в изменении например комиссионных, он может ввести

GRANT UPDATE (comm) ON Salespeople TO Diane;

Другими словами, он просто должен указать конкретный столбец к которому привилегия UPDATE должна быть применена, в круглых скобках после имени таблицы. Имена многочисленных столбцов таблицы могут указываться в любом порядке, отделяемые запятыми:

GRANT UPDATE (city, comm) ON Salespeople TO Diane;

REFERENCES следует тому же самому правилу. Когда вы предоставите при- вилегию REFERENCES другому пользователю, он сможет создавать внешние ключи ссылающиеся на столбцы вашей таблицы как на родительские ключи. Подобно UPDATE, для привилегии REFERENCES может быть указан список из одного или более столбцов для которых ограничена эта привилегия. Например, Diane может предоставить Stephen право использовать таблицу Заказчиков, как таблицу родительского ключа, с помощью такой команды:

GRANT REFERENCES (cname, cnum) ON Customers TO Stephen;

Эта команда дает Stephen право использовать столбцы cnum и cname, в качестве родительских ключей по отношению к любым внешним ключам в его таблицах. Stephen может контролировать то как это будет выполнено. Он может определить (cname, cnum) или, как в нашем случае( cnum, cname), как двух-столбцовый родительский ключ, совпадающий с помощью внешнего ключа с двум столбцами в одной из его собственных таблиц. Или он может создать раздельные внешние ключи чтобы ссылаться на пол индивидуально, обеспечив тем самым чтобы Diane имела принудительное присвоение роди- тельского ключа (см. Главу 19 ).

Не имея ограничений на номера внешних ключей он должен базироваться на этих родительских ключах, а родительские ключи различных внешних ключей - разрешены для совмещения(overlap).

Как и в случае с привилегией UPDATE, вы можете исключить список столб- цов и таким образом позволять всем без исключения столбцам быть используемыми в качестве родительских ключей. Adrian может предоставить Diane право сделать это следующей командой:

GRANT REFERENCES ON Salespeople TO Diane;

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

Соседние файлы в папке БД2012