Для отображения таблиц и классов пространственных объектов многопользовательской базы геоданных можно использовать SQL.
Приведенные в настоящей теме примеры показывают, как создать в PostgreSQL простое представление для просмотра с ограничением доступа пользователей к другим столбцам. Этот пример построен на базе таблицы со следующим определением:
CREATE TABLE employees(emp_id integer not null, name varchar(32),
department smallint not null, hire_date timestamp without time zone not null
Предоставление прав доступа к таблице
Если создающий представление пользователь не является владельцем таблицы или таблиц в этом представлении, владелец таблиц должен предоставить создателю как минимум права доступа Select.
В данном примере таблица, на базе которой построено представление (employees), принадлежит пользователю gdb. Представление создается пользователем rocket.
psql testdb gdb
Enter password for user gdb:
GRANT SELECT
ON gdb.employees
TO rocket;
Создание представления.
В этом примере пользователь rocket создает представление таблицы employees и ограничивает доступ к нему только пользователям из отдела 201:
psql testdb rocket
Enter password for user rocket:
CREATE VIEW view_dept_201
AS SELECT emp_id, name, hire_date
FROM gdb.employees
WHERE department = 201;
Выдача прав доступа к представлению
Права доступа к представлению можно предоставлять определенным пользователям, не передавая им права доступа к базовой таблице (employees). В данном примере пользователю mgr200 предоставлены права доступа SELECT к представлению view_dept_201:
GRANT SELECT
ON rocket.view_dept_201
TO mgr200;
Тестовые права доступа
Войдите в систему как mgr200 и выберите записи view_dept_201:
psql testdb mgr200
Enter password for mgr200:
SELECT * FROM rocket.view_dept_201;
emp_id name hire_date
112 LOLLI POP 2007-06-30 08:44:38
134 VAN CHIN 2007-10-15 07:41:20
150 DON GUN 2009-03-01 15:39:05
Как ожидалось, выводятся только записи для сотрудников отдела 201.