Möchten Sie eine Ausnahme auslösen (die das Einfügen verhindern würde)? Oder möchten Sie zulassen, dass die Einfügung erfolgreich ist, und einen String in dbms_output
schreiben Puffer, der vorhanden sein kann oder nicht und einem Menschen, der das Insert ausführt, angezeigt werden kann oder nicht?
In beiden Fällen soll dies ein Trigger auf Zeilenebene und kein Trigger auf Anweisungsebene sein, also müssen Sie den for each row
hinzufügen Klausel.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Wenn Sie eine Ausnahme auslösen möchten
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Wenn Sie die Ausgabe möglicherweise drucken möchten, aber das insert
zulassen Erfolg haben
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
In Wirklichkeit würde man für so etwas natürlich niemals einen Auslöser verwenden. In der realen Welt würden Sie eine Einschränkung verwenden.