Newsgroup: it.comp.software.database
Titolo: Bloccare trigger java Oracle 10g lite

Salve a tutti
ho un trigger java fatto per oracle lite che deve eseguire una cancellazione
solo se non si verifica un evento (che controllo nel codice java) ho letto
in giro che basta generare una eccezione e oracle mi DOVREBBE bloccare
l'esecuzione del trigger ma in realtà non è così! mi da l'avviso che si è
verificata una eccezione (che genero se si verifica l'evento che dovrebbe
bloccare il trigger) ma la cancellazione la fa lo stesso!
insomma vorrei ottenere in Java l'effetto di questo trigger in PSQL:
CREATE TRIGGER new cost hotel
STATUS ACTIVE
PRIORITY 1
BEFORE UPDATE ON hotel(cost)
IF new.cost > 200
EXECUTE REJECT;
come faccio?
Grazie.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 bloccare il trigger) ma la cancellazione la fa lo stesso!
Esattamente!
Grazie a chi può aiutarci.
Haxl & Stefano



Difficile poter aiutare senza leggere il codice.
In ogni caso la procedura e':
create la classe giava con il metodo che il trigger richiamera'.
Fate un attach del codice alla tabella su cui creerete il trigger.
A questo punto create il trigger (non quello postato, che ha una 
semantica che in oracle non ho mai visto... quello dovrebbe essere 
UNISQL/X) che usera' uno dei metodi contenuti nel codice "allegato" alla 
tabella.
State attenti al tipo di trigger. Probabilmente a voi serve specificare 
"for each row".
Per il debug dovreste partire dalla classe java (che deve contenere il 
trap dell'eccezione) che contiene anche il trap dell'eccezione.
Un ottimo esempio 
http://download-uk.oracle.com/docs/cd/B14156_01/doc/B13811/html/jdgwork.htm#sthref307
.
Ciao
-- 
Fabrizio Magni
fabrizi...@mycontinent.com
replace mycontinent with europe

 trap dell'eccezione) che contiene anche il trap dell'eccezione.
Ciao,
abbiamo risolto in parte il problema. Cercando disperatamente su google (non
c'č molto sull'argomento cosě specifico) ho trovato che occorre fare il
metodo Java "throws SQLException" poichč se il trigger esce con un'eccezione
tutta la procedura di DELETE che l'ha invocato viene bloccata.
Ed in effetti questo avviene quando l'eccezione si genera automaticamente
(se ad esempio scrivo sbagliato il nome di una colonna in getString("...")
di un resultset).
Se invece l'eccezione la voglio generare io tramite "throw new
SQLException("mia eccezione") il comando non va a buon fine ma genera a sua
volta un'eccezione di "[POL-8028] errore nella chiamata di un metodo Java".
Questo č il problema adesso!
Tutto il codice che ho trovato in giro utilizza la tecnica del new
SQLException...
Il risultato lo ottengo! Ma l'eccezione che sale verso l'applicazione non č
la mia ma quella di POLITE!!! E non č proprio il massimo della finezza!!!
Se sapessi/sapeste aiutarci in questo ve ne saremmo grati. Volendo posso
postare il codice completo del trigger, sono poche righe.
P.S. Non ho potuto accedere al tuo link xč Oracle richiede user e pwd!
Ciao Haxl & Stefano


 
Il throws SQLException non dovrebbe essere necessario.
Ti posso solo riconsigliare il link precedente.
Per accedervi devi creare un account su 
otn.oracle.com
 (gratuito e ti 
da' l'accesso alla documentazione e a tutto il software oracle).
Troverai gli esempi che ti servono.
