Wil je een uitzondering maken (die zou voorkomen dat de invoeging slaagt)? Of wil je het invoegen laten slagen en een string naar de dbms_output
schrijven buffer die al dan niet bestaat en die al dan niet kan worden getoond aan een mens die de insert uitvoert?
In beide gevallen wilt u dat dit een trigger op rijniveau is en niet een trigger op instructieniveau, dus u moet de for each row
toevoegen clausule.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Als je een uitzondering wilt maken
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Als u mogelijk uitvoer wilt afdrukken, maar de insert
. wilt toestaan slagen
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Natuurlijk zou je in werkelijkheid nooit een trigger voor dit soort dingen gebruiken. In de echte wereld zou je een beperking gebruiken.