Estou com um problema para montar essa trigger no qual preciso restringir o numdocumento (não pode ser duplicado) e quando o registro for igual a 1 (count) ele permite a inclusão desse registro senão o nome tem que ser igual a razao social
create or replace trigger PESSOA_AIU
after insert or update on cm.pessoa
for each row
declare
r_pessoa pessoa%rowtype;
begin
---Inclui apenas quando possuir cgc/cpf
IF :new.numdocumento is not null and upper(trim(:new.nome))=upper(trim(:new.razaosocial)) THEN
INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
VALUES(:new.idpessoa, sysdate);
END IF;
r_pessoa.nome := r_pessoa.razaosocial;
--
end PESSOA_AIUD;
Cara, o check de existência do numdocumento tem que ser feito criando uma unique key constraint.
Quanto à outra restrição, não entendi o que você quis dizer... mas me parece algo que pode ser resolvido com um unique index. Posta alguns exemplos do que pode e do que não pode e reformula a explicação para eu entender melhor, por favor.
Pois é...Bom o fato é que essa trigger gera uma mutanting table ..porque alguns dos dados de restrição :
a) Não pode ter CNPJ (numdocumento) duplicado
b) O campo nome e Razao Social precisam ser iguais - devido a ter muitos CNPJs com uma matriz e as suas filiais
e no insert isso precisa ser validado..não sei se por uma trigger que no caso não estou conseguindo ou por um bloco que tenha essas restrições...