Vil du rejse en undtagelse (som ville forhindre indsættelsen i at lykkes)? Eller vil du tillade, at indsættelsen lykkes og skrive en streng til dbms_output
buffer, der måske eller måske ikke eksisterer og måske eller måske ikke vises til et menneske, der kører indsatsen?
I begge tilfælde ønsker du, at dette skal være en trigger på rækkeniveau, ikke en udløser på sætningsniveau, så du skal tilføje for each row
klausul.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Hvis du ønsker at rejse en undtagelse
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Hvis du potentielt vil udskrive output, men tillade insert
for at få succes
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Selvfølgelig ville du i virkeligheden aldrig bruge en trigger til denne slags ting. I den virkelige verden ville du bruge en begrænsning.