Не е нужно да правите абсолютно нищо по въпроса.
Таблиците (и данните, съхранявани в тях) са собственост на потребител A. Никой не може да ги види освен ако потребител A предоставя определени привилегии на други потребители, като потребител B.
Това може да стане чрез предоставяне на привилегия за избор, т.е.
grant select on my_table to user_B;
и потребител B след това ще извлече данни като
select * from user_A.my_table;
Потребител B няма да може да променя данни (тъй като не му е разрешено вмъкване/актуализиране/изтриване).
Освен това вие (като потребител A) можете да създадете изглед който избира само част от данните, напр.
create view v_my_table as
select *
from my_table
where score > 4;
grant select on v_my_table to user_B;
Правейки това, потребител B ще види само редове, чийто резултат е по-голям от 4.
Ако има потребител C, той не може да види абсолютно нищо. Ако искате да видите някои данни, ще направите това, което вече сте направили с потребител B - да предоставите определени привилегии.
Има обаче опция да позволите на потребител B да „препраща“ привилегии на други потребители - бихте използвали with grant option
, напр.
grant select on my_table to user_B with grant option;
Това би позволило на потребител B да предостави избор на други потребители, напр.
grant select on user_A.my_table to user_C;
И накрая (като говорим за този отговор), ако има много потребители, на които искате да предоставите такива привилегии, можете да създадете роли . След това ще предоставите привилегии на роля и ще предоставите роля на друг потребител(и). Тя ви позволява да променяте ролите в зависимост от вашите (и на други потребители) желания.
create role my_role;
grant select on my_table to my_role;
Например, за начало можете да предоставите select
към my_role
и след това предоставете my_role
към потребители B, C и D.
grant my_role to user_B;
grant my_role to user_C;
По-късно можете да разрешите insert
към my_role
grant insert on my_table to my_role;
и всички потребители с предоставена my_role
автоматично ще може да вмъква редове в my_table на потребител A.