2008-11-07 2 views
1

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

Теперь, когда я выполнить запрос

выберите * от ACTION

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

В любом случае, для меня выбрать синоним И таблицу вместе?

Thanx

ответ

4

Ну, ваша базовая таблица ACTION следует переименовать, скажем, сделать LOCAL_ACTION.

Давайте представим, что ваш ACTION синоним на otheruser.LOCAL_ACTION столе ...

Тогда вы можете переопределить ACTION синонима быть:

SELECT * from LOCAL_ACTION 
UNION 
SELECT * from otheruser.LOCAL_ACTION 

Затем, в конце концов, выберите * от ACTION даст вы комбинированный список обеих таблиц.

5

Я не думаю, что ваш синоним ACTION находится в той же схеме, что и ваша таблица ACTION, поскольку это не допускается в Oracle. Скорее всего, ваш синоним ACTION находится в другой схеме, возможно, это PUBLIC-синоним. Если это так, вы можете использовать

select * from ACTION 
union 
select * from public.ACTION 
1

Столы и частные синонимами действительно одни и те же пространства имен, так что общественный синоним: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723

Имейте в виду, что UNION неявное отличие от результирующего набора , Вам нужен UNION ALL.

select * from ACTION 
union all 
select * from public.ACTION 
Смежные вопросы