Имя схемы и имя таблицы - как избежать конфликтов? - PullRequest
3 голосов
/ 27 сентября 2011

Мне нужно решить проблему с помощью базы данных Oracle.

В базе данных Oracle есть две схемы: XXX и YYY

Схема XXX содержит таблицу с именем YYY (то же имя, что ивторая схема).

Схема YYY содержит несколько последовательностей (скажем, последовательность ZZZ) и таблицы журналов, которые мне нужно использовать триггерами в схеме XXX.

Но когда я пытаюсь написатьвызвать таблицу XXX.some_table, используя эту конструкцию:

SELECT YYY.ZZZ.NEXTVAL INTO AAA FROM DUAL

Oracle считает YYY таблицей в схеме XXX и выдает сообщение об ошибке " компонент ZZZ должен быть объявлен ".Для пользователя XXX установлены соответствующие права доступа к последовательности YYY.ZZZ, но это бесполезно.

Как этого избежать?К сожалению, структура базы данных установлена ​​и не может быть изменена.

1 Ответ

6 голосов
/ 27 сентября 2011

Вы можете написать код триггера, чтобы вы могли немного контролировать базу данных.Это хорошо.

Я предлагаю вам использовать синонимы, чтобы обойти это:

create synonym yyy_zzz_seq for yyy.zzz;

После этого вы сможете ссылаться на синоним в вашем триггере:

SELECT yyy_zzz_seq.NEXTVAL INTO AAA FROM DUAL
...