Следующий оператор отменяет привилегию SELECT К таблице DEPARTMENT у пользователя KILROY, если он получил ее при выполнении GRANT SELECT:
REVOKE SELECT ON DEPARTMENT FROM KILROY;
Следующий оператор отменяет привилегию UPDATE К таблице CUSTOMER для процедуры
COUNT_BEANS:
REVOKE UPDATE ON CUSTOMER FROM PROCEDURE COUNT_BEANS;
Следующий оператор удаляет привилегию EXECUTE, которая была предоставлена процедуре COUNT_BEANS К процедуре ABANDON_OLD:
REVOKE EXECUTE ON PROCEDURE ABANDON_OLD FROM PROCEDURE COUNT_BEANS;
Для удаления нескольких, но не всех привилегий, предоставленных пользователю или процедуре, перечислите удаляемые привилегии, отделив их друг от друга запятыми. К примеру, следующий оператор удаляет привилегии INSERT и UPDATE к таблице DEPARTMENT у пользователя SERENA:
REVOKE INSERT, UPDATE ON DEPARTMENT FROM SERENA;
Следующий оператор удаляет две привилегии к таблице CUSTOMER у хранимой процедуры COUNT_BEANS:
REVOKE INSERT, DELETE
ON CUSTOMER
FROM PROCEDURE COUNT_BEANS;
Любая комбинация ранее назначенных привилегий SELECT, INSERT, UPDATE, DELETE или REFERENCES может быть отменена назначившим эти привилегии, неважно, были ли они назначены индивидуально, в списке или с использованием ALL.
Как и в случае GRANT, отмена привилегий REVOKE ALL объединяет привилегии SELECT, INSERT, UPDATE, DELETE и REFERENCES в одном выражении. Данный оператор отменит любое из этих назначенных полномочий.
Например, следующий оператор отменит все привилегии доступа к таблице
DEPARTMENTS у пользователя MAGPIE:
REVOKE ALL ON DEPARTMENTS FROM MAGPIE;
Если пользователь не имеет всех привилегий, включенных в ALL, оператор не вызовет исключения. Оператор REVOKE ALL может быть особенно полезным, если вы не знаете, какие привилегии имеет пользователь. Нет необходимости решать проблему устранения всех полномочий, доступных пользователю, потому что у REVOKE ALL есть ограничения на то, что он способен отменить.
REVOKE ALL не отменяет:
* привилегии, наследуемые вместе с ролью;
* привилегии, полученные как PUBLIC;
* привилегии EXECUTE.
Синтаксис отмены привилегии EXECUTE к хранимой процедуре:
REVOKE EXECUTE
ON PROCEDURE <имя-процедуры>
FROM <получатель> [, <получатель> [, ...]]
| [TRIGGER <имя-триггера> [, <имя-триггера> [,...]]
[PROCEDURE <имя-процедуры> [, <имя-процедуры> [, ...]]
[VIEW <имя-просмотра> [, VIEW <имя-просмотра> [, ...]];
Следующий оператор удаляет привилегию EXECUTE у пользователя HPOTTER к процедуре COUNT_CHICKENS:
REVOKE EXECUTE ON PROCEDURE COUNT_CHICKENS FROM HPOTTER;
Отмена привилегий у нескольких пользователей
Теперь мы рассмотрим как получатели привилегий, указанные в предложении FROM оператора REVOKE, могут быть объединены для отмены привилегий.
Используйте разделенный запятыми список пользователей для отмены привилегий у множества пользователей в одном операторе. Следующий оператор удаляет привилегии INSERT и UPDATE к таблице DEPARTMENTS у троих пользователей за один раз:
REVOKE INSERT, UPDATE
ON DEPARTMENTS
FROM MAGPIE, BRUNHILDE, KILROY;
Отмена привилегий, предоставленных роли, отменяет эти привилегии у всех пользователей, имеющих эту роль в качестве привилегий:
REVOKE UPDATE
ON DEPARTMENT
FROM CARTEBLANCHE;
Теперь пользователи, которым была назначена роль CARTEBLANCHE, больше не имеют привилегии UPDATE к таблице DEPARTMENT, но у них остаются другие привилегии (SELECT, INSERT, DELETE, REFERENCES, EXECUTE), которые они могли наследовать от
CARTEBLANCHE.
Вы можете использовать один оператор для отмены одних и тех же привилегий у одной или более ролей:
REVOKE DELETE, INSERT
ON DEPARTMENT
FROM CARTEBLANCHE, MAITRE_D;
Отмена назначенных роли пользователей отменяет у этих пользователей все полномочия, которые они получили с этой ролью. Используйте REVOKE для удаления роли, которую вы назначали пользователям. Следующий оператор отменяет роль
CARTEBLANCHE у пользователя KILROY:
REVOKE CARTEBLANCHE FROM KILROY;
KILROY больше не имеет привилегий доступа, полученных как результат его членства в этой роли. Однако это не оказывает влияния на других пользователей, которые получили эти привилегии через членство в данной роли.
Для отмены привилегий у одной или более процедур, триггеров или просмотров включите соответствующее ключевое слово (PROCEDURE, TRIGGER, VIEW) перед именем объекта.
Вы можете отменить одну и ту же привилегию у различных типов объектов, задав разделенный запятыми список объектов каждого типа. В этом случае просто начните каждый список с ключевого слова типа объекта.
Следующий оператор удаляет привилегии INSERT и UPDATE К таблице CUSTOMER для двух процедур и триггера:
REVOKE INSERT, UPDATE
ON CUSTOMER
FROM PROCEDURE COUNT_CHICKENS, ABANDON_OLD
TRIGGER AI_SALES ;