2009-08-19 15 views
6

पर ट्रिगर्स बनाना कोई भी जानता है कि जेडीबीसी पर बनाए गए ट्रिगर कैसे प्राप्त करें। ऐसा लगता है कि समस्या अर्धविराम के साथ करना है। किसी भी प्रतिक्रिया की बहुत सराहना की।जेडीबीसी (ऑरैकल)

निम्नलिखित एसक्यूएल काम करता है जब डेटाबेस पर चलने, लेकिन जब निम्नलिखित जावा कोड का उपयोग नहीं चला: s.executeUpdate (

Connection c=null; 
    Statement s=null; 
    try { 
     c=dataSource.getConnection(); 
     s=c.createStatement(); 
     s.executeUpdate("create or replace trigger startuptrigger after insert on startuptest for each row begin insert into startuptest values(99); end"); 
     s.close(); 
     s=null; 
     c.close(); 
     c=null; 
    } catch(SQLException e) { 
     if(s!=null) { try { s.close(); } catch(Exception f){} } 
     if(c!=null) { try { c.close(); } catch(Exception f){} } 
     throw new IOException(e.toString()); 
    } 

मैं कोशिश की है s.execute (...) और ...) और इससे कोई फर्क नहीं पड़ता। मैं ojdbc5.jar ड्राइवर का उपयोग कर रहा हूँ। ओरेकल त्रुटि देता है:

ORA-04098: trigger 'POLICYUAT.STARTUPTRIGGER' is invalid and failed re-validation 

उत्तर

0

मैंने उपर्युक्त कोड की कोशिश की और यह ट्रिगर बनाने में ठीक काम कर रहा है। तो कारण है कि इसके बाद के संस्करण हो सकता है काम नहीं करता:

  1. खाता जिससे आप कनेक्ट हो रहे हैं चलाता बनाने के लिए अधिकार नहीं: सीधे कनेक्ट और देखें कि क्या आपके पास अधिकार हैं की कोशिश करो।
  2. एसक्यूप्लस में उपर्युक्त ट्रिगर को मैन्युअल रूप से निष्पादित करें और जांचें कि आपकी तालिका मौजूद है या नहीं और आपके पास इसमें सम्मिलित करने का अधिकार है।
4

PL/SQL वाक्यविन्यास अंत अंत में के अंत में एक सेमी-कोलन की आवश्यकता है। यही कारण है कि स्ट्रिंग के रूप में

इस प्रकार होना चाहिए ", अंत; बना सकते हैं या डालने के बाद ट्रिगर startuptrigger की जगह पर प्रत्येक पंक्ति के लिए startuptest startuptest मूल्यों में डालने शुरू (99)"

+1

दरवाजे गीत शैली के लिए +1: _ "अंत में अंत के अंत में" _ ;-) – splash