/ एक ट्रिगर के अंदर / अनुदान ROLE? - ऑरैकल, ट्रिगर, अनुदान

एक ट्रिगर के अंदर अनुदान ROLE? - ऑरैकल, ट्रिगर, अनुदान

ओरेकल में निष्पादित करने का कोई तरीका है GRANT someRole TO someUser; एक ट्रिगर के अंदर कमांड?
मैंने कोशिश की, लेकिन यह काम नहीं लग रहा है।

बहुत बहुत धन्यवाद।

उत्तर:

जवाब के लिए 0 № 1

ट्रिगर्स में अधिकांश डीडीएल स्टेटमेंट की अनुमति नहीं हैक्योंकि वे निष्पादित करने के लिए एक COMMIT को मजबूर करते हैं। इस नियम के कुछ अपवाद केवल सिस्टम इवेंट ट्रिगर्स (स्टार्टअप, शट डाउन इत्यादि) पर लागू होते हैं, लेकिन ऐसा नहीं लगता है कि यह ट्रिगर एक सिस्टम ट्रिगर है। संदर्भ यहाँ.

साझा करें और आनंद लें।


जवाब के लिए 0 № 2

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

यहां एक उदाहरण = है

CREATE OR REPLACE TRIGGER my_trigger
AFTER INSERT ON my_table
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
EXECUTE IMMEDIATE "GRANT someRole TO someUser";
COMMIT;
END;

अगर यह आपके लिए काम करता है तो कृपया मुझे बताएं।

धन्यवाद, आदित्य