Реферат: СУБД INFORMIX
Ниже приводится синтаксис оператора GRANT:
GRANT список_привилегий_через_запятую ON объект
TO список_пользователей_через_запятую [WITH GRANT OPTION]
Директива WITH GRANT OPTION наделяет указанных пользователей особыми полномочиями – правом предоставления полномочий другим пользователям. Это означает, что для работы с данным объектом они могут наделять полномочиями других пользователей.
Работу с представлениями можно продемонстрировать на примерах с таблицей emp_data:
CREATE TABLE emp_data
(
emp_num integer,
emp_name char(20),
hired date,
id-code char (10),
salary decimal(4,2)
)
Пусть после создания таблицы был выполнен следующий оператор:
REVOKE ALL ON emp_data FROM PUBLIC
Теперь создадим несколько представлений для разных категорий пользователей. Для тех, кто может иметь доступ по чтению из неконфиденциальных столбцов, создадим такое представление:
CREATE VIEW emp_data AS
SELECT emp_num, emp_name FROM emp_data
Пользователи, получившие привилегию SELECT для данного представления, могут видеть некоторые данные без возможности обновления. Для работников отдела кадров создадим следующее представление:
CREATE VIEW enter_data AS
SELECT emp_num,emp_name,id-code,salary FROM emp_data
Этим пользователям необходимо предоставить привилегии INSERT и UPDATE для этого представления. Так как создатель таблицы и представления имеет привилегии на вставку как для таблицы так и для представления, можно предоставить привилегии INSERT и UPDATE на представление даже тем пользователям, у которых нет такой привилегии:
GRANT SELECT, INSERT, UPDATE ON enter_data TO olga_s, helena_m
Для некоторых пользователей, которые могут вводить или изменять некоторые данные о сотрудниках, создадим еще одно представление:
CREATE VIEW enter_upd AS
SELECT emp_num,emp_name,id-code FROM emp_data
Это представление отличается от предыдущего тем, что в последнем не показываются данные о зарплате сотрудников. Наконец, пусть менеджерам необходим доступ по чтению и редактированию всех данных о работниках фирмы:
CREATE VIEW all_data AS
SELECT * FROM emp_data