CREATE OR REPLACE TRIGGER TEST_TRIG_COMPOUND
FOR UPDATE
ON cm.pessoa
COMPOUND TRIGGER
/* Declaration Section*/
v_qtd number:=0;
v_numdocumento pessoa.numdocumento%type;
AFTER EACH ROW IS
BEGIN
---Inclui apenas quando possuir cgc/cpf
IF :new.numdocumento is not null then
if upper(trim(:new.nome))=upper(trim(:new.razaosocial)) THEN
INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
VALUES(:new.idpessoa, sysdate);
else
--se for diferente, verificar se tem mais de um registro com o mesmo numdocumento,
--e nome=razao social, caso não tenha, é porque o cadastro foi feito "errado" nome diferente da razão social
v_numdocumento :=:new.numdocumento;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
select count(*)
into v_qtd
from cm.pessoa
where trim(numdocumento)=v_numdocumento
and trim(upper(nome))=trim(upper(razaosocial));
--se não houver registro com o mesmo numdocumento e razão social igual, então leva para o corp.pessoa
if v_qtd =0 then
INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
VALUES(:new.idpessoa, sysdate);
end if;
END AFTER STATEMENT;
END TEST_TRIG_COMPOUND;
/
CREATE OR REPLACE TRIGGER TEST_TRIG_COMPOUND
FOR UPDATE
ON cm.pessoa
COMPOUND TRIGGER
/* Declaration Section*/
v_qtd number:=0;
v_numdocumento pessoa.numdocumento%type;
AFTER EACH ROW IS
BEGIN
---Inclui apenas quando possuir cgc/cpf
IF :new.numdocumento is not null then
if upper(trim(:new.nome))=upper(trim(:new.razaosocial)) THEN
INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
VALUES(:new.idpessoa, sysdate);
else
--se for diferente, verificar se tem mais de um registro com o mesmo numdocumento,
--e nome=razao social, caso não tenha, é porque o cadastro foi feito "errado" nome diferente da razão social
v_numdocumento :=:new.numdocumento;
---### adiciona um end If aqui ####
end if;
---### e aqui ####
end if;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
select count(*)
into v_qtd
from cm.pessoa
where trim(numdocumento)=v_numdocumento
and trim(upper(nome))=trim(upper(razaosocial));
--se não houver registro com o mesmo numdocumento e razão social igual, então leva para o corp.pessoa
if v_qtd =0 then
INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
--#### tenta remover variavel bind do after statement, ela não é suportada
VALUES(:new.idpessoa, sysdate);
end if;
END AFTER STATEMENT;
END TEST_TRIG_COMPOUND;
/