Искате ли да предизвикате изключение (което би попречило на вмъкването да успее)? Или искате да позволите на вмъкването да успее и да напишете низ в dbms_output
буфер, който може или не може да съществува и може или не може да бъде показан на човек, изпълняващ вмъкването?
И в двата случая ще искате това да е тригер на ниво ред, а не тригер на ниво израз, така че ще трябва да добавите for each row
клауза.
CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Ако искате да предизвикате изключение
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Ако искате потенциално да отпечатате изход, но разрешите insert
за успех
BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Разбира се, в действителност никога не бихте използвали тригер за подобни неща. В реалния свят бихте използвали ограничение.