Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100

    [PL/SQL]Trigger nn funzionante

    salve,utilizzo il seguente trigger in modo ke controlli che i valori inseriti nella tabella zb.nome non siano gli stessi presenti in za.nome...il trigger viene compilato,ma al momento dell'esecuzione,oracle presenta l'errore
    "superato numero massimo di livelli sql ricorsivi(50)"
    come posso risolvere??

    CREATE OR REPLACE TRIGGER tr4
    BEFORE INSERT ON zb
    FOR EACH ROW
    DECLARE
    CURSOR c1 IS (SELECT nome FROM za);
    varc1 c1%rowtype;
    app EXCEPTION;
    flag boolean:=FALSE;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO varc1;
    EXIT WHEN c1%NOTFOUND;
    IF :NEW.nome = varc1.nome THEN
    RAISE app;
    END IF;
    END LOOP;
    IF flag= FALSE then
    INSERT INTO zb(nome,prezzo_singolo)VALUES(:NEW.nome,:NEW.prezz o_singolo);
    COMMIT;
    END IF;
    EXCEPTION
    WHEN app THEN
    Raise_Application_Error(-20002,'Errore parola gia presente in za');
    END;

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    954
    Ciao Antony,
    sempre alla presa con i trigger.

    Come l'altro giorno (poi non mi hai detto se hai risolto) stai creando un trigger ricorsivo perché stai dicendo se sei in insert su zb allora nel trigger fai una nuova insert in zb, che a sua volta richiamerà il trigger all'infinito.

    Io credo che per risolvere questo problema non devi operare con i trigger ma prima di fare il post del dato devi verificare che la condizione sia rispettata.

  3. #3
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    954
    Ciao,
    scusami ho solo ora letto che avevi risolto con l'altro problema. Ok meglio così!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    come effettuo il post del dato?

  5. #5
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    954
    Beh il post lo fai già altrimenti il trigger come scatta?
    Intendo post come salvataggio.

    Tu hai una applicazione, che salva su DB, in questo caso una insert, prima di fare la insert verifica che tale dato non sia presente nell'altra tabella altrimenti restituisci un warning che avvisa l'utente che tale dato non può essere salvato.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    ok,ho risolto il problema di prima(semplicemente mi è bastato togliere la insert nel trigger(ke generava il problema ricorsivo)).

    Ora ho un altro problema,il quale gestisce le date:
    in pratica come input ho una data completa(20-gen-85) e voglio effettuare dei controlli sopra,ovvero ke se la data è compresa in un periodo(ovvero dal 1 gennaio al 31 marzo) fai questo,altrimenti se compresa in un altro periodo(1 aprile 31 giugno)fai quest'altro.il problema è ke la data incorpora anche il campo anno,ke a me da problemi nei confronti coi periodi(i quali sono senza anno),quindi magari avrei bisogno di caratteri "jolly" per poter fare il confronto...cm si fa?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    100
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.