CREATE SYNONYM

Объекты базы данных принадлежат тем пользователям, которые их создали, и доступны лишь в схеме конкретного пользователя, если только пользователь явным образом не предоставил право на доступ к объектам другим пользователям или ролям, назначенным другим пользователям. Но даже предоставив полномочия на использование объекта, пользователь должен отдавать себе отчет в том, что владение схемой ограничивает доступ к объектам данных Oracle. Допустим, что таблица STUDENT существует в схеме пользователя STUD, а пользователь USER1 пытается обратиться к этой таблице:

SELECT * FROM student  WHERE kod_stud = 256;

В этом случае появляется следующее сообщение

SELECT * FROM student

*

ORA-00942: table or view does not exist

(таблица или представление не существует)

Oracle не возвращает данные, связанные с KOD_STUD= 256, а сообщает пользователю о том, что объект не существует. Причина, по которой USER1 не может видеть таб­лицу в схеме STUD, заключается в том, что пользователь USER1 не обратился к таблице как к находящейся в схеме STUD. Покажем, как оператор select может быть успешно выполнен:

SELECT * FROM stud.student WHERE kod_stud = 256;

Помнить о том, какому пользователю какая таблица принадлежит, чересчур слож­но, поэтому в базе данных можно применить синонимы, устраняющие необходимость указания владельца схемы (делающие ее «прозрачной»).

Синоним — это альтерна­тивный способ обращения к существующей таблице со стороны пользователей. Синонимы позволяют обращаться к объекту базы данных или по другому имени, или без обязательной ссылки на владельца объекта. Однако синоним не изменяет харак­теристики описания таблицы. Таким образом, с помощью синонимов пользователи могут обращаться к таблице, не предваряя ее имени именем владельца.

Синонимы могут быть общими или частными. К частному (private) синониму может обращаться только тот пользователь, который создал его и владеет им. Если же синоним общий (public), он доступен любому пользователю базы данных.  Частный и общий синонимы создаются с помощью команд  CREATE SYNONYM и  CREATE PUBLIC SYNONYM. Причем на создание общих синонимов нужно иметь специальную привилегию.

Общий синоним создается привилегированным пользователем и позволяет другим пользователям базы данных обращаться к конкретной таблице, не предваряя ссылку на нее именем схемы.

Пример: Пользователь STUD может создать общий синоним для таблицы STUDENT.

— Выполняется пользователем STUD

CREATE PUBLIC SYNONYM student FOR stud.student;

После создания этого синонима пользователь USER1 может обратиться к таблице с его помощью:

—Выполняется пользователем USER1

SELECT * FROM student WHERE kod_stud = 256;

Другим типом синонимов являются частные синонимы, создаваемые пользовате­лями для себя и позволяющие только им обращаться к таблице в другой схеме по одному ее имени. Пользователь не может обратиться к таблице с помощью частного синонима другого пользователя; он должен создать свой собственный.

Пример: В следующем программном блоке пользователь USER1 получает тот же результат, что и раньше, но с помощью частного синонима.

—Выполняется пользователем USER1

CREATE SYNONYM student FOR stud.student;

—Выполняется пользователем USER1

SELECT * FROM student WHERE kod_stud = 256;

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

DROP SYNONYM student;

DROP PUBLIC SYNONYM student;

 

Объекты базы данных принадлежат тем пользователям, которые их создали, и доступны лишь в схеме конкретного пользователя, если только пользователь явным образом не предоставил право на доступ к объектам другим пользователям или ролям, назначенным другим пользователям. Но даже предоставив полномочия на использование объекта, пользователь должен отдавать себе отчет в том, что владение схемой ограничивает доступ к объектам данных Oracle. Допустим, что таблица STUDENT существует в схеме пользователя STUD, а пользователь USER1 пытается обратиться к этой таблице:

SELECT * FROM studentWHERE kod_stud = 256;

В этом случае появляется следующее сообщение

SELECT * FROM student

*

ORA-00942: table or view does not exist

(таблица или представление не существует)

Oracle не возвращает данные, связанные с KOD_STUD= 256, а сообщает пользователю о том, что объект не существует. Причина, по которой USER1 не может видеть таб­лицу в схеме STUD, заключается в том, что пользователь USER1 не обратился к таблице как к находящейся в схеме STUD. Покажем, как оператор select может быть успешно выполнен:

SELECT * FROM stud.student WHERE kod_stud = 256;

Помнить о том, какому пользователю какая таблица принадлежит, чересчур слож­но, поэтому в базе данных можно применить синонимы, устраняющие необходимость указания владельца схемы (делающие ее «прозрачной»). Синоним — это альтерна­тивный способ обращения к существующей таблице со стороны пользователей. Синонимы позволяют обращаться к объекту базы данных или по другому имени, или без обязательной ссылки на владельца объекта. Однако синоним не изменяет харак­теристики описания таблицы. Таким образом, с помощью синонимов пользователи могут обращаться к таблице, не предваряя ее имени именем владельца.

Синонимы могут быть общими или частными. К частному (private) синониму может обращаться только тот пользователь, который создал его и владеет им. Если же синоним общий (public), он доступен любому пользователю базы данных. Частный и общий синонимы создаются с помощью команд CREATESYNONYM и CREATE PUBLIC SYNONYM. Причем на создание общих синонимов нужно иметь специальную привилегию.

Общий синоним создается привилегированным пользователем и позволяет другим пользователям базы данных обращаться к конкретной таблице, не предваряя ссылку на нее именем схемы.

Пример: Пользователь STUD может создать общий синоним для таблицы STUDENT.

— Выполняется пользователем STUD

CREATE PUBLIC SYNONYM student FOR stud.student;

После создания этого синонима пользователь USER1 может обратиться к таблице с его помощью:

—Выполняется пользователем USER1

SELECT * FROM student WHERE kod_stud = 256;

Другим типом синонимов являются частные синонимы, создаваемые пользовате­лями для себя и позволяющие только им обращаться к таблице в другой схеме по одному ее имени. Пользователь не может обратиться к таблице с помощью частного синонима другого пользователя; он должен создать свой собственный.

Пример: В следующем программном блоке пользователь USER1 получает тот же результат, что и раньше, но с помощью частного синонима.

—Выполняется пользователем USER1

CREATE SYNONYM student FOR stud.student;

Выполняетсяпользователем USER1

SELECT * FROM student WHERE kod_stud = 256;

DROP SYNONYM

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

drop synonym student;
drop public synonym student;

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.