/ / Oracle कनेक्शन विशेषता कैसे सेट और उपयोग करें - जावा, oracle11g, ट्रिगर

ओरेकल कनेक्शन विशेषता - जावा, oracle11g, ट्रिगर्स सेट और उपयोग कैसे करें

मेरे पास एक डीबी ट्रिगर है और मैं चाहूंगा कि एक निश्चित कनेक्शन में वह अपना इन्सर्ट / अपडेट / डिलीट नहीं करेगा।

मैंने उसके बारे में एक विशेषता मूल्य का उपयोग करने के बारे में सोचाplsql कोड जो इंगित करता है कि क्या यह इस निश्चित प्रकार से उसका कनेक्शन है। मैं कनेक्शन की इस विशेषता को जावा में सेट करना चाहता हूं। मैं यह कैसे कर सकता हूँ? और अगर यह "नहीं किया जा सकता है, तो मैं अन्य सुझावों के लिए खुला हूं कि कैसे ट्रिगर करने के लिए डॉन" टी कुछ कनेक्शनों में अपने तर्क करते हैं (निर्भर करता है कि कनेक्शन के उद्देश्य क्या हैं)।

संपादित:

धन्यवाद दोस्तों मुझे लगता है कि मेरी समस्या का एक अलग समाधान है। वास्तव में मेरे पास पंक्ति में एक फ़ील्ड है जो मैं सम्मिलित करता हूं (जो ट्रिगर को आग लगाता है) जो मुझे संकेत देने में मदद करता है कि ट्रिगर को आग लगनी चाहिए या नहीं।

उत्तर:

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

एक तरीका है जिसके बारे में सोच सकता हूं dbms_application_info मान को पास करने के लिए client_info.

अपने जावा कार्यक्रम में:

cstmt = connection.prepareCall("{call dbms_application_info.set_client_info(?)}");
cstmt.setString(1, "no_triggers");
cstmt.execute();

फिर अपने ट्रिगर में आप कुछ इस तरह से कर सकते हैं:

create or replace trigger ...
as
declare
l_info varchar(65);
begin
dbms_application_info.read_client_info(l_info);
if l_info = "no_triggers" then
return;
end if;

... actual trigger code follows here

end;

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

आपको उपयोगकर्ता अभिगम नियंत्रण के लिए एक कस्टम ट्रिगर का उपयोग नहीं करना चाहिए, क्योंकि यह आसानी से एक रखरखाव दुःस्वप्न बन सकता है। इसके बजाय, एक समर्पित बनाएं। ROLE या PROFILE जो केवल है GRANTईडी SELECT उस मेज पर और जो आप अपने "विशेष" कनेक्शन के लिए उपयोग करते हैं।