Vuoi sollevare un'eccezione (che impedirebbe la riuscita dell'inserimento)? Oppure vuoi consentire all'inserimento di avere successo e scrivere una stringa in dbms_output
buffer che può esistere o meno e può essere mostrato o meno a un essere umano che esegue l'inserto?
In entrambi i casi, vorrai che questo sia un trigger a livello di riga, non un trigger a livello di istruzione, quindi dovrai aggiungere il for each row
clausola.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Se vuoi sollevare un'eccezione
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Se desideri stampare potenzialmente l'output ma consenti insert
per avere successo
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Ovviamente, in realtà, non useresti mai un trigger per questo genere di cose. Nel mondo reale, useresti un vincolo.