आपको इसके बारे में कुछ भी करने की ज़रूरत नहीं है।
टेबल्स (और भीतर संग्रहीत डेटा) उपयोगकर्ता ए के स्वामित्व में हैं। कोई भी इसे जब तक . नहीं देख सकता है उपयोगकर्ता A अन्य उपयोगकर्ताओं को कुछ विशेषाधिकार प्रदान करता है, जैसे उपयोगकर्ता B.
यह चुनिंदा विशेषाधिकार प्रदान करके किया जा सकता है, अर्थात
grant select on my_table to user_B;
और उपयोगकर्ता B तब डेटा को इस रूप में लाएगा
select * from user_A.my_table;
उपयोगकर्ता बी डेटा को संशोधित करने में सक्षम नहीं होगा (क्योंकि इसे सम्मिलित/अपडेट/डिलीट नहीं किया गया था)।
इसके अलावा, आप (उपयोगकर्ता 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 से बड़ा है।
यदि उपयोगकर्ता सी है, तो यह बिल्कुल कुछ भी नहीं देख सकता है। यदि आप इसे कुछ डेटा देखना चाहते हैं, तो आप वही करेंगे जो आपने पहले से उपयोगकर्ता बी के साथ किया था - कुछ विशेषाधिकार प्रदान करें।
हालांकि, उपयोगकर्ता बी को अन्य उपयोगकर्ताओं के लिए "अग्रेषित" विशेषाधिकार देने का विकल्प है - आप with grant option
का उपयोग करेंगे , उदा.
grant select on my_table to user_B with grant option;
यह उपयोगकर्ता बी को अन्य उपयोगकर्ताओं को चयन करने की अनुमति देगा, उदा.
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
grant दे सकते हैं करने के लिए my_role
grant insert on my_table to my_role;
और सभी उपयोगकर्ताओं को my_role
granted प्रदान किया गया स्वचालित रूप से उपयोगकर्ता ए की my_table में पंक्तियों को सम्मिलित करने में सक्षम होगा।