Sql - due tabelle - inserimento dati con condizione

di il
3 risposte

Sql - due tabelle - inserimento dati con condizione

Buongiorno,


STORE PROCEDURE SQL

Ho due tabelle:
la prima tabella ha il nome file:

tabella FILE:
IDfile
nome
DATA
ESITO

la seconda tabella ha il nome dettaglio:

tabella DETTAGLIO:
IDDETTAGLIO
NOME
COGNOME
ESITO
FILE_FK

la terza tabella ha il nome pubblica:
tabella PUBBLICA
IDPUBBLICA


Voglio realizzare una store procedure nei seguenti modi:

la tabella FILE ha una relazione 1 a N della tabella DETTAGLIO

in pratica una volta inseriti i dati nella tabella dettaglio, con insert
nella tabella file c'è la colonna che si chiama esito, questa colonna se è ok , controllando che tutti i record sono inseriti nella tabella dettaglio cioè esito positivo fa la insert
altrimenti nella tabella dettaglio se l'esito è negativo cioè qualche record non è stato inserito nella tabella questa colonna è ko e non fa la insert

tutti coloro che hanno avuto esito posito cioè ok fa la insert nella tabella PUBBLICA

Spero che mi sono spiegato meglio

Come si fà?

3 Risposte

  • Re: Sql - due tabelle - inserimento dati con condizione

    Ho letto con un po' di fretta ma mi sembra che ti basta mettere quello che ti serve all'interno di una sola transazione
  • Re: Sql - due tabelle - inserimento dati con condizione

    Gentilmente mi potete fare un esempio scritto equivalente ?

    Grazie
  • Re: Sql - due tabelle - inserimento dati con condizione

    Puoi verificare dove ho sbagliato?
    gentilmente me lo puoi correggere?
    
    BEGIN
    	DECLARE integer VARIABLES.iddettaglioTemp;
    	DECLARE string VARIABLES.statoTemp;
    	DECLARE integer VARIABLES.codhnTemp;
    	DECLARE integer VARIABLES.partitaivacfTemp;
    	DECLARE string VARIABLES.ragionesocialeTemp;
    	DECLARE string VARIABLES.indirizzoTemp;
    	DECLARE string VARIABLES.comuneTemp;
    	DECLARE string VARIABLES.provTemp;
    	DECLARE integer VARIABLES.capTemp;
    	DECLARE double VARIABLES.latitudineTemp;
    	DECLARE double VARIABLES.longitudineTemp;
    	DECLARE string VARIABLES.regioneTemp;
    	DECLARE integer VARIABLES.telefonoTemp;
    	DECLARE integer VARIABLES.faxTemp;
    	DECLARE string VARIABLES.emailTemp;
    	DECLARE string VARIABLES.esitoTemp;
    	DECLARE integer VARIABLES.file_fkTemp;
    BEGIN
    	SELECT * FROM target.dettaglio tabellaDettaglio INNER JOIN target.file  tabellaFile ON tabellaDettaglio.file_fk = tabellaFile.idfile WHERE tabellaDettaglio.esito = VARIABLES.esitoTemp;
    BEGIN
    				IF(tabellaDettaglio.iddettaglio != IS NULL && tabellaDettaglio.stato != IS NULL && tabellaDettaglio.codhn != IS NULL && tabellaDettaglio.partitaivacf != IS NULL && tabellaDettaglio.ragionesociale != IS NULL && tabellaDettaglio.indirizzo != IS NULL && tabellaDettaglio.comune != IS NULL && tabellaDettaglio.prov != IS NULL && tabellaDettaglio.cap != IS NULL && tabellaDettaglio.latitudine != IS NULL && tabellaDettaglio.longitudine != IS NULL && tabellaDettaglio.regione != IS NULL && tabellaDettaglio.telefono != IS NULL && tabellaDettaglio.fax != IS NULL && tabellaDettaglio.email != IS NULL && tabellaDettaglio.esito != IS NULL && tabellaDettaglio.file_fk != IS NULL)
    			IF(VARIABLES.esitoTemp == 'OK')
    				INSERT INTO target.published tabellaPublished (tabellaPublished.idpublished, tabellaPublished.stato,tabellaPublished.codhn,tabellaPublished.partitaivacf,tabellaPublished.ragionesociale,tabellaPublished.indirizzo,tabellaPublished.comune,tabellaPublished.prov,tabellaPublished.cap,tabellaPublished.latitudine,tabellaPublished.longitudine,tabellaPublished.regione,tabellaPublished.telefono,tabellaPublished.fax,tabellaPublished.email) VALUES(VARIABLES.iddettaglioTemp,VARIABLES.statoTemp, VARIABLES.codhnTemp,VARIABLES.partitaivacfTemp,  VARIABLES.ragionesocialeTemp, VARIABLES.indirizzoTemp,  VARIABLES.comuneTemp,  VARIABLES.provTemp, VARIABLES.capTemp,  VARIABLES.latitudineTemp, VARIABLES.longitudineTemp, VARIABLES.regioneTemp, VARIABLES.telefonoTemp,VARIABLES.faxTemp,  VARIABLES.emailTemp );
    	END ELSE
    	 ERROR "tabella published esito KO, IL RECORD ha il VALORE null";
    END
    	END
    		END
    
    
Devi accedere o registrarti per scrivere nel forum
3 risposte