Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    creare trigger su Oracle

    Un saluto a tutti ..

    ho la necessità di creare un trigger su un db Oracle 9.0.2

    la mia necessità consiste nell'incrementare un campo di una tabella (A_GIACENZE) quando si inserisce un nuovo record su una tabella (TB_TRANS_ARTICLES).

    vi posto il codice:

    CREATE OR REPLACE TRIGGER TriggerGIACENZE
    BEFORE INSERT
    ON TB_TRANS_ARTICLES
    FOR EACH ROW

    BEGIN

    a questo punto, ed è la cosa che non riesco a fare, ho la necessità di sapere se l'articolo che viene inserito nella tabella TB_TRANS_ARTICLES esiste già nella tabella A_GIACENZE.

    se l'articolo esiste faccio una cosa del genere:
    UPDATE A_GIACENZE SET QTA = QTA + :NEW.QTY_WEIGHT
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID;

    se invece non esite:
    INSERT INTO A_GIACENZE ( ARTICLE_ID, QTA )
    VALUES ( :NEW.ARTICLE_ID,:NEW.QTY_WEIGHT );

    END;

    qualcuno sa aiutarmi ?
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Conoscendo SQL Server ti avrei detto di fare un banale IF EXISTS...
    Ho provato a cercare se c'è qualcosa di analogo anche in Oracle ed ho trovato questo link

    http://forums.oracle.com/forums/thre...hreadID=319710

    credo ti possa essere utile

  3. #3
    Grazie comas17 ...

    credo di esserci riuscito:

    CREATE OR REPLACE TRIGGER TriggerGIACENZE
    AFTER INSERT
    ON TB_TRANS_ARTICLES
    FOR EACH ROW

    DECLARE
    my_tab_rec A_GIACENZE%ROWTYPE;

    BEGIN

    SELECT * INTO my_tab_rec
    FROM A_GIACENZE
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID;
    UPDATE A_GIACENZE SET QTA = QTA + :NEW.QTY_WEIGHT
    WHERE ARTICLE_ID = :NEW.ARTICLE_ID;

    EXCEPTION

    WHEN NO_DATA_FOUND THEN
    INSERT INTO A_GIACENZE ( ARTICLE_ID, QTA ) VALUES
    ( :NEW.ARTICLE_ID,:NEW.QTY_WEIGHT );

    END;


    non ho ben capito la sintassi .... ma funziona.
    Pippo Giacalone
    giacalone@tin.it

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.