Czy chcesz zgłosić wyjątek (który uniemożliwiłby pomyślne wstawienie)? A może chcesz pozwolić na pomyślne wstawienie i zapisanie ciągu do dbms_output
bufor, który może, ale nie musi istnieć i może być pokazywany człowiekowi uruchamiającemu wstawkę?
W obu przypadkach chcesz, aby był to wyzwalacz na poziomie wiersza, a nie na poziomie instrukcji, więc musisz dodać for each row
klauzula.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Jeśli chcesz zgłosić wyjątek
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Jeśli chcesz potencjalnie wydrukować dane wyjściowe, ale zezwól na insert
odnieść sukces
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Oczywiście w rzeczywistości nigdy nie użyłbyś spustu do tego rodzaju rzeczy. W prawdziwym świecie użyłbyś ograniczenia.