मैं एक टेबल की विदेशी कुंजी खोजना चाहता हूं लेकिन एक ही नाम के साथ एक से अधिक उपयोगकर्ता/स्कीमा हो सकता है। मैं वर्तमान में लॉग इन उपयोगकर्ता को कैसे देख सकता हूं? क्या कोई ऐसा कार्य है जो इसके मालिक को देता है? क्या होगा यदि सार्वजनिक समानार्थी हैं?ओरेकल में ऑब्जेक्ट के स्वामी को मैं कैसे ढूंढ सकता हूं?
उत्तर
आप ALL_OBJECTS क्वेरी कर सकता है देखने: एक उपयोगकर्ता
उपयोगकर्ता की SQL विवरण कोई स्कीमा योग्यता के साथ एक वस्तु नाम का संदर्भ यदि
select *
from ALL_SYNONYMS
where synonym_name = 'FOO'
बस स्पष्ट करने के लिए, (:
select owner
, object_name
, object_type
from ALL_OBJECTS
where object_name = 'FOO'
समानार्थी शब्द खोजने के लिए उदाहरण के लिए 'FOO'), ओरेकल FIRST उस नाम की किसी ऑब्जेक्ट के लिए उपयोगकर्ता की स्कीमा की जांच करता है (उस उपयोगकर्ता की स्कीमा में समानार्थी समेत)। यदि ओरेकल उपयोगकर्ता की स्कीमा से संदर्भ को हल नहीं कर सकता है, तो ओरेकल फिर सार्वजनिक समानार्थी के लिए जांच करता है।
आप एक विशेष TABLE_NAME पर बाधाओं के लिए विशेष रूप से देख रहे हैं:
select c.*
from all_constraints c
where c.table_name = 'FOO'
union all
select cs.*
from all_constraints cs
join all_synonyms s
on (s.table_name = cs.table_name
and s.table_owner = cs.owner
and s.synonym_name = 'FOO'
)
HTH
- परिशिष्ट:
यदि आपका उपयोगकर्ता जैसे DBA_ विचारों के लिए उपयोग (दी जाती है आपके उपयोगकर्ता को SELECT_CATALOG_ROLE दिया गया है), आप पिछले SQL उदाहरणों में 'ALL_
' के स्थान पर 'DBA_
' को प्रतिस्थापित कर सकते हैं। ALL_x
विचार केवल उन वस्तुओं को दिखाते हैं जिन्हें आपको विशेषाधिकार प्रदान किए गए हैं। DBA_x
विचार सभी डेटाबेस ऑब्जेक्ट्स दिखाएंगे, भले ही आपके पास उनके पास विशेषाधिकार हों या नहीं।
दिलचस्प सवाल - मैं वहाँ किसी भी ओरेकल समारोह है कि (लगभग एक "जो" यूनिक्स में आदेश की तरह) यह करता है नहीं लगता है, लेकिन आप से नाम के लिए संकल्प आदेश प्राप्त कर सकते हैं:
select * from
(
select object_name objname, object_type, 'my object' details, 1 resolveOrder
from user_objects
where object_type not like 'SYNONYM'
union all
select synonym_name obj , 'my synonym', table_owner||'.'||table_name, 2 resolveOrder
from user_synonyms
union all
select synonym_name obj , 'public synonym', table_owner||'.'||table_name, 3 resolveOrder
from all_synonyms where owner = 'PUBLIC'
)
where objname like upper('&objOfInterest')
ओरेकल सत्र के भीतर वर्तमान उपयोगकर्ता का नाम ढूंढने के लिए, USER
फ़ंक्शन का उपयोग करें।
ध्यान दें कि बाधा के मालिक, विदेशी कुंजी वाले तालिका के मालिक, और संदर्भित तालिका के मालिक सभी अलग-अलग हो सकते हैं। ऐसा लगता है कि यह ’ तालिका आप मालिक है ’ रुचि रखते हैं, में जो मामले में आप यही चाहते के करीब होना चाहिए:
select Constraint_Name
from All_Constraints
where Table_Name = 'WHICHEVER_TABLE'
and Constraint_Type = 'R' and Owner = User;
ALL_TABLES और ALL_CONSTRAINTS तरह ओरेकल विचारों को स्वामी स्तंभ है, जो आप करने के लिए उपयोग कर सकते हैं अपनी क्वेरी को प्रतिबंधित करें। सभी के बजाय USER के साथ शुरू होने वाली इन तालिकाओं के वेरिएंट भी हैं, जो केवल उन ऑब्जेक्ट्स को सूचीबद्ध करते हैं जिन्हें वर्तमान उपयोगकर्ता द्वारा एक्सेस किया जा सकता है।
these विचारों में से एक को आपकी समस्या को हल करने में मदद करनी चाहिए। वे हमेशा इसी तरह की समस्याओं के लिए मेरे लिए ठीक काम करते थे।
मुझे यह प्रश्न शीर्ष परिणाम के रूप में मिला, जबकि ओगकल में किसी तालिका के मालिक को कैसे ढूंढना है, इसलिए मैंने सोचा कि मैं दूसरों की सुविधा के लिए तालिका विशिष्ट उत्तर का योगदान दूंगा।
निम्न क्वेरी एक Oracle DB में एक विशिष्ट तालिका के मालिक को खोजने के लिए उपयोग करें:
select owner from ALL_TABLES where TABLE_NAME ='<MY-TABLE-NAME>';
- 1. मैं ऑब्जेक्ट का केंद्र कैसे ढूंढ सकता हूं?
- 2. मैं जावास्क्रिप्ट में Shift + key को कैसे ढूंढ सकता हूं?
- 3. मैं मॉडल के रिश्तों को कैसे ढूंढ सकता हूं?
- 4. मैं धारावाहिक जावा ऑब्जेक्ट के serialVersionUID को कैसे ढूंढ सकता हूं?
- 5. मनमाने ढंग से जावास्क्रिप्ट ऑब्जेक्ट को देखते हुए, मैं इसकी विधियों को कैसे ढूंढ सकता हूं?
- 6. मैं सी # में ऑब्जेक्ट के सभी सार्वजनिक फ़ील्ड कैसे ढूंढ सकता हूं?
- 7. मैं उन तत्वों को कैसे ढूंढ सकता हूं जिनमें jquery
- 8. मैं HTML स्निपेट में टेक्स्ट नोड्स कैसे ढूंढ सकता हूं?
- 9. मैं AJAX ऐप में अप्रयुक्त सीएसएस कैसे ढूंढ सकता हूं?
- 10. रूबी ऐप में अप्रयुक्त विधियों को कैसे ढूंढ सकता हूं?
- 11. मैं ऑब्जेक्ट को जेनेरिक में कैसे डाल सकता हूं?
- 12. मैं एप्लिकेशन का बेस यूआरएल कैसे ढूंढ सकता हूं?
- 13. मैं सबसे महंगी क्वेरी कैसे लॉग और ढूंढ सकता हूं?
- 14. मैं कॉर्पस से केवल 'रोचक' शब्द कैसे ढूंढ सकता हूं?
- 15. मैं ओरेकल में row_number कैसे बढ़ा सकता हूं?
- 16. मैं संग्रहित प्रक्रिया कॉल कैसे ढूंढ सकता हूं?
- 17. मैं वर्तमान DNS सर्वर कैसे ढूंढ सकता हूं?
- 18. मैं NSLog में ऑब्जेक्ट के मान कैसे देख सकता हूं?
- 19. मैं cmd से वर्तमान विंडोज भाषा कैसे ढूंढ सकता हूं?
- 20. मैं 1-बार ई-क्रेडिट कार्ड कैसे ढूंढ सकता हूं?
- 21. मैं सरणी में अधिकतम मान के सूचकांक को कैसे ढूंढ और मुद्रित कर सकता हूं?
- 22. पायथन में नियमित अभिव्यक्तियों के लिए मैं सभी मैचों को कैसे ढूंढ सकता हूं?
- 23. मैं आर में कक्षा के लिए परिभाषित सभी विधियों को कैसे ढूंढ सकता हूं?
- 24. मैं WordPress पर अपना php.ini कैसे ढूंढ सकता हूं?
- 25. मैं फ़्यूज़न पैसेंजर संस्करण कैसे ढूंढ सकता हूं?
- 26. मैं दो Django क्वेरीसेट्स के चौराहे को कैसे ढूंढ सकता हूं?
- 27. उद्धरणों के बीच वाले लोगों को छोड़कर मैं सभी सफेद जगहों को कैसे ढूंढ सकता हूं?
- 28. मैं फेसबुक एप्लिकेशन के व्यवसाय स्वामी को कैसे बदलूं?
- 29. मैं ऑब्जेक्ट कैसे उठा सकता हूं?
- 30. मैं सभी * .js फ़ाइल को लिनक्स में दोबारा निर्देशिका में कैसे ढूंढ सकता हूं?
बस क्वेरी एक छोटे से अधिक लचीला बनाने के लिए, मैं क्वेरी होगा 'जहां कम (OBJECT_NAME) = ' foo'' यह विशेष रूप से सहायक होता है जब आपके पास फ़ंक्शन का नाम होता है, लेकिन आवरण नहीं (उदाहरण के लिए, किसी बाहरी प्रोग्राम में कॉल से, जो असंवेदनशील है, जैसा कि मेरे लिए मामला था)। – Travis
@Travis: जो क्वेरी को और अधिक लचीला बना देगा। एसक्यूएल कथन में ओरेकल को "केस असंवेदनशील" पहचानकर्ताओं को कैसे देखता है, उससे अधिक बारीकी से मिलान करने के लिए, हम ** 'WHERE object_name = UPPER (' foo ') '** चाहते हैं। (एक पहचानकर्ता जो SQL कथन में डबल कोट्स में संलग्न नहीं है, ओरेकल द्वारा देखा जाता है जैसे कि यह ऊपरी मामला था। (ओरेकल पहचानकर्ता * केस संवेदनशील हैं; हमें उन्हें कम मामले को सुरक्षित रखने के लिए SQL कथन में डबल कोट्स में संलग्न करना होगा अक्षर। जब हम 'चयन * से foo' करते हैं, तो ओरेकल वास्तव में पहचानकर्ता को' FOO' के रूप में देखता है, जैसे कि हमने 'भोजन से चुनें' किया था।) – spencer7593