[QGIS-it-user] Spatialite - Suggerimenti per Trigger

Aldo Gessa aldogessa78 a gmail.com
Ven 21 Giu 2019 15:30:06 PDT


Salve, non riesco a risolvere questo problema.
Ho creato un DB e sto cercando di impostare un trigger su una tabella
nominata "ATTO_AMMINISTRATIVO",  capace di NON PERMETTERE L'INSERT solo
qualora siano soddisfatte contemporaneamente le seguenti condizioni:
1) se nella colonna "tipo_atto" il valore è diverso da 1 o 2;
2)se la colonna "id_atto_impegno_di_spesa" è valorizzata (NOT NULL).
Ho scritto dopo mille peripezie il seguente trigger:

CREATE TRIGGER ControllaNumImpegno_Insert AFTER INSERT ON
ATTO_AMMINISTRATIVO

BEGIN

SELECT

CASE

WHEN NEW.tipo_atto NOT IN (1,2)  *AND* NEW.id_atto_impegno_di_spesa NOT NULL 

THEN

RAISE (ABORT, 'IL TIPO DI ATTO AMMINISTRATIVO SELEZIONATO NON GENERA UN
IMPEGNO DI SPESA')

END;

END;

Purtroppo fallisce miseramente in quanto, nonostante la clausola AND
nell'istruzione WHEN, questa non viene considerata ed il trigger controlla
solo la condizione 1) con la conseguenza che vieta qualsiasi INSERT per
"tipo_atto" NOT IN (1,2) anche qualora "id_atto_impegno_di_spesa " è NULLO.

E' COME SE LA CLAUSOLA *AND* NON FOSSE AMMESSA. 
Ho fatto prove con la clausola OR e funziona (ma purtroppo non soddisfa la
condizione da me cercata).

Sono certo che sto sbagliando tutto ma prima di arrendermi mi farebbe
piacere conoscere la soluzione.
Spero di essermi spiegato e che ci sia qualcuno che possa illuminarmi.

Saluti

Aldo






--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-Italian-User-f5250612.html


Maggiori informazioni sulla lista QGIS-it-user