Database Reinserire valori dopo controllo con Trigger Postgresql

NarcoSlayer

Utente Gold
21 Febbraio 2010
729
61
147
323
Salve, se mi trovo ad inserire dei valori in un database, e controllarli tramite trigger, nel caso in cui il valore non fosse conforme mi blocca l'inserimento, la mia domanda è, sarebbe possibile controllare il valore e nel caso in cui quest'ultimo non fosse idoneo all'inserimento, dare la possibilità di correggere o di inserire il valore esatto?
Mi trovo su postgresql ma la risposta mi interesserebbe anche per mysql.
Un trigger casuale è:
SQL:
CREATE OR REPLACE FUNCTION check_ccv2() RETURNS
    TRIGGER AS $$
        BEGIN
            IF NEW.ccv2 < 100 OR NEW.ccv2>999
            THEN
                RAISE EXCEPTION 'ccv2 non valido.'
                USING HINT = 'Il ccv2 deve avere 3 cifre.';

            END IF;
        RETURN NEW;
        END;
       
        $$ LANGUAGE 'plpgsql';

        CREATE TRIGGER check_ccv2 BEFORE INSERT OR UPDATE ON carta
        FOR EACH ROW EXECUTE PROCEDURE check_ccv2();
Se ad esempio inserisco 32 ovviamente mi blocca l'inserimento con l'exception e l'hint, ma io invece che bloccare vorrei la possibilità di reinserire un valore.
 
Ho piu' esperienza con la programmazione backend che con i vari SQL ma non credo ci sia una funzione del genere built-in. Se ho ben capito vuoi che la funzione chieda in modo interattivo il reinserimento dei dati errati su console, pero' i db non sono progettati per questo, la console e' solo uno dei client possibili, se dovessi fare una cosa simile ad esempio in PHP catturerei l'eccezione lanciata e mostrerei nuovamente all'utente il form di inserimento dati con il campo errato marcato in rosso e una tooltip con l'hint o in alternativa sposterei l'intero controllo sul backend e se i dati non sono validi a monte la query non parte proprio. In console credo che l'unica opzione sia reinviare l'intera query corretta.
 
Come detto da @JunkCoder normalmente queste operazioni non vengono effettuate su client pensati per l'amministrazione del database, come le console di accesso. Sicuramente puoi fare quello che tu vuoi attraverso un tuo applicativo che, una volta ricevuto l'errore da parte del database, vada a mostrare l'errore all'utente e consenta il reinserimento dei dati (anche solamente la modifica di quelli errati) ed il reinvio al database.