просмотр с таблицами из многопользовательской схемы - PullRequest
0 голосов
/ 13 января 2010

У меня есть представление, построенное на нескольких таблицах из разных пользовательских схем.Благодаря зарегистрированному в данный момент пользователю он может видеть таблицу из другой схемы.Когда представление создается, имя таблицы становится неоднозначным, поскольку у пользователя есть доступ к одним и тем же таблицам из другой схемы.Есть ли способ указать использование таблицы из текущей пользовательской схемы при создании представления?Можем ли мы сделать это для одной из таблиц из определения представления, в то время как другие таблицы могут быть выбраны из любой схемы?

Ответы [ 2 ]

2 голосов
/ 14 января 2010

"Когда создается представление таблицы имя становится неоднозначным как пользователь иметь доступ к тем же таблицам из другая схема "

Это не однозначно для Oracle.

Представление существует в схеме, SCHEMA_1. Если это представление ссылается на объект TABLE_A, Oracle сначала будет искать объект TABLE_A в SCHEMA_1. Если он найдет таблицу, он будет использовать это. Если он находит синоним, он будет использовать то, на что указывает синоним. Если в SCHEMA_1 ничего нет, он будет искать PUBLIC SYNONYM для TABLE_A и использовать все, на что он указывает.

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

Вы можете запросить USER_DEPENDENCIES, чтобы увидеть, на каких объектах фактически базируется представление.

Вы не можете иметь представление в SCHEMA_1, которое использует TABLE_A в SCHEMA_2, если запрашивается из SCHEMA_2, но использует другой TABLE_A в SCHEMA_3, если запрашивается из SCHEMA_3.

1 голос
/ 13 января 2010

Вы должны иметь доступ к схеме (с правильными разрешениями), указав префикс имени схемы.

schemaname.tablename

Надеюсь, я правильно понял ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...