Você deseja gerar uma exceção (o que impediria que a inserção fosse bem-sucedida)? Ou você deseja permitir que a inserção seja bem-sucedida e escreva uma string no
dbms_output
buffer que pode ou não existir e pode ou não ser mostrado a um humano executando a inserção? Em ambos os casos, você desejará que este seja um gatilho em nível de linha, não um gatilho em nível de instrução, portanto, você precisará adicionar o
for each row
cláusula. CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
FOR EACH ROW
Se você deseja gerar uma exceção
BEGIN
IF( length( :new.id ) <> 11 )
THEN
RAISE_APPLICATION_ERROR( -20001,
'The new ID value must have a length of 11' );
END IF;
END;
Se você quiser potencialmente imprimir a saída, mas permitir o
insert
ter sucesso BEGIN
IF( length( :new.id ) <> 11 )
THEN
dbms_output.put_line( 'The new ID value must have a length of 11' );
END IF;
END;
Claro, na realidade, você nunca usaria um gatilho para esse tipo de coisa. No mundo real, você usaria uma restrição.