Лишеиие 11ривилегий
GRANT SELECT ON Clairesview to Claire;
Такие привилегии на использование столбцов можно создать, применяя и другие привилегии, но для команды INSERT это означает вставку значений по умолчанию, а для команды DELETE ограничения на столбцы будут бессмысленны. Привилегии UPDATE и REFERENCES могут быть сделаны для столбцов без изменения представ
ления.
Ограничение области действия привилегий определенным подмножеством строк. Более полезным способом фильтрации привилегий для представлений явля
ется использование самого представления для ограничения привилегии отдельными
строками. Естественно, для этого в представлении используется предикат, определяю
щий какие строки интересны. Например, чтобы передать привилегию на выполнение команды UPDATE для всех покупателей (таблица Customers), расположенных в Лон доне (city = 'London'), Adrian, можно создать такое представление:
CREATE VIEW Londoncust
AS SELECT •
FROM Customers
WHERE city = 'London· WITH СНЕСК OPTION;
Затем можно передать привилегию UPDATE Adrian:
GRANT·UPDATE ON Londoncust ТО Adrian;
Эта привилегия отличается от определенной на столбцах привилегии UPDATE тем, что исключаются все строки таблицы Customers, в которых значение поля city от лично от 'London'. Предложение WIТH СНЕСК OPTION не дает возможности Adrian изменять значение поля city.
Передача прав доступа для производных данных. Можно также предоставить
пользователям доступ к производным данным, отличным от реальных данных табли цы. В этом случае могут быть полезны функции агрегирования. Можно создать пред ставление, которое дает общее число, среднюю величину и сумму по полю amt для
заказов, поступивших на каждую дату:
CREATE VIEW Datetotals
AS SELECT odate, COUNT (•), SUM (amt), AVG (amt)
FROM Orders
GROUP ВУ odate;
Теперь Dine дается привилегия выполнять команду SELECT для представления
Datetotals:
GRANT SELECT ON Datetotals ТО Oiane;
Использование представлений как альтернативы системе ограничений. Один из вариантов применения техники, упомянутой в главе 18, состоит в испо.1ьзовании представлений WIТH СНЕСК OPТION вместо ограничений. Предположим, нужно