2009-08-19 3 views
6

Qualcuno sa come ottenere trigger creati su JDBC. Sembra che il problema abbia a che fare con il punto e virgola. Qualsiasi feedback molto apprezzato.Creazione di trigger su JDBC (Oracle)

Il seguente SQL funziona quando eseguito sul database, ma non quando viene eseguito utilizzando il seguente codice Java: s.execute

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()); 
    } 

ho provato (...) e s.executeUpdate (...) e non fa differenza. Sto usando il driver ojdbc5.jar. Oracle restituisce l'errore:

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

risposta

0

Ho provato il codice sopra e sta funzionando bene nella creazione del trigger. Quindi la ragione per cui quanto sopra non funziona potrebbe essere:

  1. L'account con cui ci si connette non dispone dei diritti per creare trigger: provare a collegare direttamente e verificare se si dispone dei diritti.
  2. Esegui manualmente il trigger sopra in sqlplus e controlla se la tua tabella esiste e hai i diritti per inserirla.
4

La sintassi PL/SQL richiede un punto e virgola alla fine della fine alla fine. Questa è la stringa dovrebbe essere come segue

"creare o sostituire trigger triggertrigger dopo l'inserimento su startuptest per ogni riga iniziare l'inserimento nei valori startuptest (99); fine;"

+1

+1 per lo stile dei testi di The Doors: _ "alla fine della fine alla fine" _ ;-) – splash