У меня нет ваших таблиц, поэтому я использую одну из своих.
Во-первых, содержимое таблицы: столбец NICK используется для различения пользователей базы данных (scott & hr).Таблица принадлежит пользователю SCOTT.
SQL> connect scott/tiger@xe
Connected.
SQL> select id_emp, fname, nick
2 from person;
ID_EMP FNAME NICK
---------- -------------------- --------------------
1 Little HR
2 Charles HR
3 Rio HR
4 Seb SCOTT
5 Romain SCOTT
Создание представления с использованием выражения where
, которое вы использовали:
SQL> create or replace view v_person as
2 select id_emp, fname
3 from person
4 where nick = user;
View created.
Предоставление привилегий пользователю HR (иначе оно не будет отображатьсячто угодно):
SQL> grant select on v_person to hr;
Grant succeeded.
Хорошо, давайте проверим, что видят эти пользователи.
SQL> show user
USER is "SCOTT"
SQL> select * from v_person;
ID_EMP FNAME
---------- --------------------
4 Seb
5 Romain
SQL> connect hr/hr@xe
Connected.
SQL> -- including the owner's name:
SQL> select * from scott.v_person;
ID_EMP FNAME
---------- --------------------
1 Little
2 Charles
3 Rio
SQL>
Кажется, все в порядке, не так ли?
Каквашей проблемы: вы случайно не использовали строчные ник значение?
SQL> update person set nick = 'scott' where id_emp > 3;
2 rows updated.
SQL> select * From v_person;
no rows selected
SQL>
Если нет, то не могли бы вы создать такой же простой пример, который ясно показывает, что вы сделали?