Синонимы

Синоним – это альтернативное имя объекта. Если создан синоним для объекта, то все SQL команды к объекту могут выполняться используя настоящее имя или синоним. Это может показаться очень простым, но это не так. Использование синонимов позволяет приложениям работать для любого пользователя, вне зависимости от схемы в которой лежат таблицы и представления и даже БД. Рассмотрим запрос

 

select * from hr.employees@prod;

 

Пользователь выполняющий такой запрос должен знать что таблица employees принадлежит схеме HR в БД определяемой сслыкой PROD. Если общий синоним был созда таким запросом

 

create public synonym emp for hr.employees@prod;

 

то все пользователи (все!) могут использовать запрос вида

 

select * from emp;

 

Это предоставляет независимость данных и абстракцию местонахождения. Таблицы и представления могут быть переименованы или перемещены без необходимости изменения кода; необходимо только поправить синоним.

Так же как и команды SELECT, DML команды могут обращаться к синонимам так же как к объектам на которые они ссылаются.

Приватные синонимы (private synonyms) – это объекты схемы. Они могут быть или в текущей схеме, или использоваться вместе с именем схемы. Общие (public) синонимы существуют независимо от схемы. Общие синонимы могут использоваться любым пользователем кому назначены соответсвующие права без использования имени схемы. Приватные синонимы должны иметь уникальное имя в схеме. Общие синонимы могут иметь такое же имя как и иям объекта схемы. Когда выполняется запрос без указания схемы, Oracle вначале проверяет есть ли объект с таким именем в текущей схеме, и только если он не найдет Oracle попробует найти общий синоним с таким именем. То есть если в предыдущем примере у пользователя есть таблица EMP – это будет то что отобразится пользователю – не таблица назначенная общему синониму.

Синтаксис создания синонима

 

CREATE [PUBLIC] SYNONYM synonym FOR object ;

 

Пользователю должны быть назначены права для создания синонимов (приватных) и дополнительные права для создания общих синонимов. Обычно только администратор БД может создавать и удалять общие синонимы. Это правильно потому что их создание (или удаление) влияет на всех пользователей.

 

EXAM TIP The “public” in “public synonym” means that it is not a schema object and cannot therefore be prefixed with a schema name. It does not mean that everyone has permissions against it.

 

 

 

Для удаления синонима используется команда

 

DROP [PUBLIC] SYNONYM synonym ;

 

Если объект на который ссылается синоним (таблица или представление) удалён, синоним не удаляется. Любое обращение к синониму вернёт ошибку. В этом отношении синоинмы работают как представления. Если объекты были вновь созданы, синонимы должны быть перекомпилированы перед использованием. Как и для представлений, это случится автоматически при обращении к синониму или вручную использовав команду

 

ALTER SYNONYM synonym COMPILE;

Добавить комментарий