Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Trigger problem

Re: Trigger problem

From: Alen Cappelletti <cocker_at_libero.it>
Date: 8 Jun 2005 01:22:34 -0700
Message-ID: <1118218954.826865.7020@g47g2000cwa.googlegroups.com>


Barbara,
maybe U can help me more.

Simplify I got 2 table.

EXTERNAL and REAL (are the same from my POST).

In real I made a foreign key on ID of external. When I try an INSERT I got an error for the foreign key on REAL.

I think 'cause the trigger ON EXTERNAL try to insert the ID on REAL on scope BEFORE INSERT.
If I delete the foreign key all works fine.

The is a way or an workaround for use a foreign key with this trigger



This is the ultimate code...but I have delete the FK on TABSTAMPAFATTURE

CREATE OR REPLACE TRIGGER "BEF_TBLAPPSTAMPAFATTURE"     BEFORE INSERT
    ON "TABAPPOGGIOSTAMPAFATTURE"
    FOR EACH ROW
DECLARE

	v_SeqMamma NUMBER;
	v_SeqFiglia NUMBER;
	v_RAGIONESOCIALE varchar2(50);
 	v_INDIRIZZO varchar2(50);
  	v_CAP varchar2(5);
    v_CITTA varchar2(50);
    v_PROVINCIA varchar2(2);
    v_PIVA varchar2(11);
    v_CODICESIGMA varchar2(20);
    v_DESCRIZIONECOMMESSA varchar2(4000);
    v_NUMORDINECLIENTE varchar2(4000);
    v_FILIALE varchar2(50);
    v_COMMERCIALE varchar2(60);
    v_DESATTIVITA varchar2(4000);
    v_QUANTITA number(3);
    v_PREZZO number(10,3);
    v_TOTRIGALISTINO number(10,3);
    v_IVA number(10,3);
    v_IMPONIBILEPIUIVA number(10,3);
    v_TIPOLOGIAPAGAMENTO varchar2(200);

    v_POSTGIORNI number(3);
    v_FINEMESE number(1);

BEGIN

	--Per ID della tabella appoggio
	SELECT
		NVL(MAX(IDAPPOGGIOSTAMPAFATTURA),0)+1
	INTO
		v_SeqMamma
	FROM TABAPPOGGIOSTAMPAFATTURE;
	:NEW.IDAPPOGGIOSTAMPAFATTURA := v_SeqMamma;

	--Per ID della tabella reale delle attivitą da fatturare
	SELECT
		NVL(MAX(IDTABSTAMPAFATTURA),0)+1
	INTO
		v_SeqFiglia
	FROM TABSTAMPAFATTURE;

	SELECT
		INITCAP(MAX(cli.RAGSOC)) RAGSOC,
		INITCAP(MAX(cli.INDIRIZZO)) INDIRIZZO,
		MAX(cli.CAP) CAP,
		INITCAP(MAX(cli.CITTA)) CITTA,
		TRIM(MAX(cli.PROVINCIA)) PROVINCIA,
		MAX(cli.PARTITAIVA) PARTITAIVA,
		MAX(cli.CODSIGMA) CODSIGMA,
		MAX(comm.DESCRIZIONE) DESCRIZIONE,
		MAX(comm.NUMORDINECLIENTE) NUMORDINECLIENTE,
		MAX(anacomm.FILIALE) FILIALE,
		Trim(MAX(anacomm.NOME))||' '||Trim(MAX(anacomm.COGNOME))
RiferimentoCommerciale,
		MAX(lis.DESATTIVITA) DESATTIVITA,
		TO_NUMBER(MAX(lis.QUANTITA)) QUANTITA,
		TO_NUMBER(MAX(lis.PREZZO)) PREZZO,
		TO_NUMBER(MAX(lis.QUANTITA)*MAX(lis.PREZZO)) TotRiga,
		TO_NUMBER(((MAX(lis.QUANTITA)*MAX(lis.PREZZO))/100)*20) IVA,
		TO_NUMBER((MAX(lis.QUANTITA)*MAX(lis.PREZZO)+((MAX(lis.QUANTITA)*MAX(lis.PREZZO))/100)*20))
ImponibileConIva,
		MAX(pag.DescrizionePagamento) DescrizionePagamento,
		TO_NUMBER(MAX(pag.GIORNI)) PostfatturazioneGiorni,
		TO_NUMBER(MAX(pag.FINEMESE)) FineMese
	INTO
		v_RAGIONESOCIALE,
	 	v_INDIRIZZO,
	  	v_CAP,
	    v_CITTA,
	    v_PROVINCIA,
	    v_PIVA,
	    v_CODICESIGMA,
	    v_DESCRIZIONECOMMESSA,
	    v_NUMORDINECLIENTE,
	    v_FILIALE,
	    v_COMMERCIALE,
	    v_DESATTIVITA,
	    v_QUANTITA,
	    v_PREZZO,
	    v_TOTRIGALISTINO,
	    v_IVA,
	    v_IMPONIBILEPIUIVA,
	    v_TIPOLOGIAPAGAMENTO,
	    v_POSTGIORNI,
	    v_FINEMESE
	FROM TABDATIFATTURAZIONE  fatt,
		 TABLISTINI lis,
		 TABTESTATACOMMESSE comm,
		 TABANAGRAFICACLIENTI cli,
		 TABANAGRAFICACOMMERCIALI anacomm,
		 TABTIPOPAGAMENTO pag
	WHERE TRIM(fatt.NUMEROCOMMESSA) = :NEW.NUMEROCOMMESSA
	AND TRIM(fatt.PROGRIGA) = :NEW.PROGRIGA
	AND TRIM(fatt.PROGRIGAFATTURA) = :NEW.PROGRIGAFATTURA
	AND TRIM(fatt.MESE) = :NEW.Mese
	AND fatt.NUMEROCOMMESSA = lis.NUMEROCOMMESSA
	AND fatt.PROGRIGA = lis.PROGRIGA
	AND comm.NUMEROCOMMESSA = lis.NUMEROCOMMESSA
	AND comm.TIPOPAGAMENTO = pag.PROGPAGAMENTO
	AND comm.PROGCLIENTE = cli.PROGCLIENTE
	AND cli.PROGCOMMERCIALE = anacomm.PROGCOMMERCIALE
	GROUP BY fatt.MESE;

	INSERT INTO TABSTAMPAFATTURE (IDAPPOGGIOSTAMPAFATTURA,
IDTABSTAMPAFATTURA, NUMEROCOMMESSA, PROGRIGA, PROGRIGAFATTURA, MESE, DATAUNIFICATRICESELEZIONE, RAGIONESOCIALE, INDIRIZZO, CAP, CITTA, PROVINCIA, PIVA, FILIALE, COMMERCIALE, DESCRIZIONECOMMESSA, NUMORDINECLIENTE, CODICESIGMA, TIPOLOGIAPAGAMENTO, POSTGIORNI, FINEMESE, DESATTIVITA, QUANTITA, PREZZO, TOTRIGALISTINO, IVA, IMPONIBILEPIUIVA) VALUES
		(
		v_SeqMamma,
		v_SeqFiglia,

:NEW.NUMEROCOMMESSA,
:NEW.PROGRIGA,
:NEW.PROGRIGAFATTURA,
:NEW.MESE,
:NEW.DATAUNIFICATRICESELEZIONE,
v_RAGIONESOCIALE, v_INDIRIZZO, v_CAP, v_CITTA, v_PROVINCIA, v_PIVA, v_FILIALE, v_COMMERCIALE, v_DESCRIZIONECOMMESSA, v_NUMORDINECLIENTE, v_CODICESIGMA, v_TIPOLOGIAPAGAMENTO, v_POSTGIORNI, v_FINEMESE, v_DESATTIVITA, v_QUANTITA, v_PREZZO, v_TOTRIGALISTINO, v_IVA, v_IMPONIBILEPIUIVA );

END; Received on Wed Jun 08 2005 - 03:22:34 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US