1 messaggio dal 16 giugno 2013
Buonasera, è il mio primo post su questo forum, sto realizzando una applicazione in C# ed SQLite per la gestione del bilancio familiare, sono un paio di giorni che cerco una soluzione al seguente problema:
le tabelle del database sono legate da relazioni uno a uno e uno a molti ed ho l'esigenza di garantire l'integrità e la coerenza dei dati in special modo prima della cancellazione di un record di una tabella che lascerebbe dati orfani nella relativa tabella con cui ha relazioni.
SQLite supporta le Foreign key ma non segnala l'errore nel caso la si violi; si ovvia usando i TRIGGER ma non riesco a trovare nulla in rete che mi istruisca su come Creare un trigger che sollevi una eccezione (funzione RAISE()) nel caso in cui sia verificata una condizione prima della cancellazione del record; Il Trigger creato da me è:
CREATE TRIGGER DeleteGruppiDuea
BEFORE DELETE ON Gruppi
FOR EACH ROW
BEGIN
SELECT CASE
WHEN ((SELECT * FROM SottoGruppi WHERE SottoGruppi.GruppoAssociato = OLD.IdGruppo) IS NOT NULL)
THEN RAISE(ABORT, 'Errore')
END;
END;

ma il risultato è che l'eccezione è sollevata sia che soddisfi la condizione sia che non la soddisfi, l'errore segnalato è: only a single result allowed for a SELECT that is part of an expression.

Qualcuno Può Aiutarmi ????

Giuseppe

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.