powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Роли и селекты
4 сообщений из 4, страница 1 из 1
Роли и селекты
    #39316045
прззаг
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, суть темы:
1) Есть 3 пользователя - user1, user2, user3
3) Есть 3 таблицы:
MAIN_TABLE
id value1Заголовок 12Заголовок 2

USER1_TABLE
id pril1Приложение 12Приложение 2

USER2_TABLE
id pril_text1Текст приложения 12Текст приложения 2

Пользователь user1 может делать селекты только из таблиц MAIN_TABLE и USER1_TABLE , пользователь user2 может делать селекты только из таблиц MAIN_TABLE и USER2_TABLE , а пользователь user3 может делать селекты из всех таблиц.


Вопрос: Как можно сделать универсальный селект сделанный от имени user1 который будет выводить такой результат:
id value pril pril_text1 Заголовок 1 Приложение 1 NULL2 Заголовок 2 Приложение 2 NULL
Если этот же самый запрос будет делать user2 , то, соответсвенно, результат станет таким:

id value pril pril_text1 Заголовок 1 NULL Текст приложения 12 Заголовок 2 NULL Текст приложения 2

Ну а результат user3 будет таким:

id value pril pril_text1 Заголовок 1 Приложение 1 Текст приложения 12 Заголовок 2 Приложение 2 Текст приложения 2

Каким путем правильней решать проблему? Писать функцию на PL\SQL и проверять результат курсора? Или есть уже какой-нибудь готовый пакет с подходящим методом?

З.Ы. Oracle 11g
...
Рейтинг: 0 / 0
Роли и селекты
    #39316058
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM Using Oracle Virtual Private Database to Control Data Access (FAQ) и вместо "не давать select" использовать "давать запретительный предикат".
...
Рейтинг: 0 / 0
Роли и селекты
    #39316081
имхо, для конкретно этой задачи, если не будут дальнейшие хотелки, самый лучший способ три вью и один результирующий определяючий какой это пользователь:

Код: plsql
1.
2.
3.
4.
5.
6.
create or replace or perereplace view super_view as
select * from view1 where username='user1'
union all
select * from view2 where username='user2'
union all
select * from view2 where username='user3';
...
Рейтинг: 0 / 0
Роли и селекты
    #39316083
Сори на мой русский.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Роли и селекты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]