2013-03-13 6 views
7

एक ट्रिगर ghazal_current_bef_upd_row नामित बनाने के लिए प्रयास करते समय:मैं SYS के स्वामित्व वाली वस्तुओं पर ट्रिगर्स क्यों नहीं बना सकता?

create trigger ghazal_current_bef_upd_row 
before update on ghazal_current 
for each row 
when (new.Rating < old.Rating) 
begin 

insert into ghazal_current_audit 
(GhazalName,Old_Rating,New_Rating) 
values 
(:old.GhazalName,:old.Rating,:new.Rating); 
end; 

मैं निम्नलिखित त्रुटि मिलती है:

Error report: 
ORA-04089: cannot create triggers on objects owned by SYS 
04089. 00000 - "cannot create triggers on objects owned by SYS" 
*Cause: An attempt was made to create a trigger on an object owned by SYS. 
*Action: Do not create triggers on objects owned by SYS. 

दोनों तालिकाओं ghazals_current नामित और ghazal_current_auditSYS द्वारा बनाया गया था। मैं SYS द्वारा बनाई गई तालिका पर ट्रिगर क्यों नहीं बना सकता।

+0

ओरेकल आपको SYS के स्वामित्व वाली वस्तुओं पर ट्रिगर बनाने की अनुमति नहीं देता है। –

+1

SYS स्कीमा में उपयोगकर्ता आधारित ट्रिगर बनाने के लिए यह एक अच्छा अभ्यास नहीं है। एक नई स्कीमा में टेबल, ट्रिगर्स और अन्य ऑब्जेक्ट्स क्यों नहीं बनाते? – user75ponic

उत्तर

9

आपको SYS स्कीमा में कोई ऑब्जेक्ट नहीं बनाना चाहिए। वह उपयोगकर्ता ओरेकल डेटाबेस प्रबंधन प्रणाली का हिस्सा है, और इसके साथ टूलिंग आपके डेटाबेस को तोड़ने की संभावना है। the documentation से:।

"व्यवस्थापक खाता SYS स्वचालित रूप से जब एक डेटाबेस बनाई गई है बनाई गई है इस खाते सभी डेटाबेस प्रशासनिक कार्यों SYS स्कीमा भंडार आधार तालिकाओं और डेटा शब्दकोश के लिए विचारों प्रदर्शन कर सकते हैं ये।। बेस टेबल और विचार ओरेकल डेटाबेस के संचालन के लिए महत्वपूर्ण हैं। SYS स्कीमा में टेबल्स केवल डेटाबेस द्वारा छेड़छाड़ किए जाते हैं और किसी भी उपयोगकर्ता द्वारा कभी भी संशोधित नहीं किया जाना चाहिए। "

ओह, यदि आप सोच रहे हैं, तो यह भी सिस्टम पर लागू होता है।

ट्रिगर विशेष रूप से दुरुपयोग के लिए प्रवण होते हैं और स्केलिंग समस्याओं का एक प्रमुख स्रोत हैं। यही कारण है कि ओरेकल हमें SYS में ट्रिगर बनाने के लिए मना करता है, क्योंकि ऐसा करने से भ्रष्ट हो सकता है या कम से कम डेटा डिक्शनरी के प्रदर्शन को प्रभावित कर सकता है।

बेशक यह नहीं हो रहा है कि यहां क्या हो रहा है। आपने SYS में अपनी खुद की टेबल बनाई हैं। अच्छी तरह से उन्हें छोड़ दो। अभी व। अपने स्वयं के उपयोगकर्ता, गजल या जो कुछ भी बनाने और इसे आवश्यक विशेषाधिकार प्रदान करने के लिए SYS का प्रयोग करें। फिर उस नए उपयोगकर्ता के रूप में अपनी टेबल और स्कीमा बनाने के लिए कनेक्ट करें।

+0

मुझे आपको समझ में नहीं आया –

संबंधित मुद्दे