
create table conveniosintegracaooperadora (
       fil_codigo           integer not null,
       con_codigo           integer not null,
       exa_codigo           varchar(5) not null,
       exa_kodigo           varchar(5) not null,
       mco_codigo           integer not null,
       mco_kodigo           integer not null
);

create unique index xpkconveniosintegracaooperadora on conveniosintegracaooperadora
(
       fil_codigo,
       con_codigo,
       exa_codigo,
       exa_kodigo,
       mco_codigo,
       mco_kodigo
);

create index xif1conveniosintegracaooperador on conveniosintegracaooperadora
(
       fil_codigo,
       con_codigo
);

create index xif2conveniosintegracaooperador on conveniosintegracaooperadora
(
       fil_codigo,
       exa_codigo,
       mco_codigo
);

create index xif3conveniosintegracaooperador on conveniosintegracaooperadora
(
       fil_codigo,
       exa_kodigo,
       mco_kodigo
);


alter table conveniosintegracaooperadora
       add primary key (fil_codigo, con_codigo, exa_codigo, 
              exa_kodigo, mco_codigo, mco_kodigo);


drop function fn_td_convenios() cascade;

create function fn_td_convenios() returns opaque as '
declare
	numrows integer;										 
begin
    delete from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.con_codigo = old.con_codigo;

    select count(*) into numrows
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela exportaintegracaooperadora.'';
    end if;

    delete from conveniocotaexamesituacao
      where
        conveniocotaexamesituacao.fil_codigo = old.fil_codigo and
        conveniocotaexamesituacao.con_codigo = old.con_codigo;

    select count(*) into numrows
      from conveniocotaexame
      where
        conveniocotaexame.fil_codigo = old.fil_codigo and
        conveniocotaexame.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniocotaexame.'';
    end if;

    select count(*) into numrows
      from conveniomatricula
      where
        conveniomatricula.fil_codigo = old.fil_codigo and
        conveniomatricula.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniomatricula.'';
    end if;

    delete from conveniostaxa
      where
        conveniostaxa.fil_codigo = old.fil_codigo and
        conveniostaxa.con_codigo = old.con_codigo;

    delete from convenioshistoricocota
      where
        convenioshistoricocota.fil_codigo = old.fil_codigo and
        convenioshistoricocota.con_codigo = old.con_codigo;

    select count(*) into numrows
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicaoweb.'';
    end if;

    delete from convenioapoiado
      where
        convenioapoiado.fil_codigo = old.fil_codigo and
        convenioapoiado.con_codigo = old.con_codigo;

    delete from apropriaplanoconta
      where
        apropriaplanoconta.fil_codigo = old.fil_codigo and
        apropriaplanoconta.con_codigo = old.con_codigo;

    delete from apropriacentrocusto
      where
        apropriacentrocusto.fil_codigo = old.fil_codigo and
        apropriacentrocusto.con_codigo = old.con_codigo;

    delete from contrassenharequisicao
      where
        contrassenharequisicao.fil_codigo = old.fil_codigo and
        contrassenharequisicao.con_codigo = old.con_codigo;

    delete from convenioignorarecebimento
      where
        convenioignorarecebimento.fil_codigo = old.fil_codigo and
        convenioignorarecebimento.con_codigo = old.con_codigo;

    select count(*) into numrows
      from materialenviado
      where
        materialenviado.fil_codigo = old.fil_codigo and
        materialenviado.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela materialenviado.'';
    end if;

    select count(*) into numrows
      from faturarequisicao
      where
        faturarequisicao.fil_codigo = old.fil_codigo and
        faturarequisicao.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela faturarequisicao.'';
    end if;

    select count(*) into numrows
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.con_codrepasse = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicao.'';
    end if;

    select count(*) into numrows
      from conveniosrepasse
      where
        conveniosrepasse.fil_codigo = old.fil_codigo and
        conveniosrepasse.con_codrepasse = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniosrepasse.'';
    end if;

    delete from conveniosrepasse
      where
        conveniosrepasse.fil_codigo = old.fil_codigo and
        conveniosrepasse.con_codigo = old.con_codigo;

    delete from conveniospreco
      where
        conveniospreco.fil_codigo = old.fil_codigo and
        conveniospreco.con_codigo = old.con_codigo;

    select count(*) into numrows
      from orcamentoconvenio
      where
        orcamentoconvenio.fil_codigo = old.fil_codigo and
        orcamentoconvenio.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela orcamentoconvenio.'';
    end if;

    delete from convenioentidade
      where
        convenioentidade.fil_codigo = old.fil_codigo and
        convenioentidade.con_codigo = old.con_codigo;

    select count(*) into numrows
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_codigo and
        notafiscal.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela notafiscal.'';
    end if;

    select count(*) into numrows
      from receberpagar
      where
        receberpagar.fil_codigo = old.fil_codigo and
        receberpagar.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela receberpagar.'';
    end if;

    delete from convenioscontatos
      where
        convenioscontatos.fil_codigo = old.fil_codigo and
        convenioscontatos.con_codigo = old.con_codigo;

    delete from medicoconvenioproibido
      where
        medicoconvenioproibido.fil_codigo = old.fil_codigo and
        medicoconvenioproibido.con_codigo = old.con_codigo;

    select count(*) into numrows
      from medicoconveniotiss
      where
        medicoconveniotiss.fil_codigo = old.fil_codigo and
        medicoconveniotiss.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela medicoconveniotiss.'';
    end if;

    select count(*) into numrows
      from paciente
      where
        paciente.fil_codigo = old.fil_codigo and
        paciente.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela paciente.'';
    end if;

    select count(*) into numrows
      from examematconvenioprazo
      where
        examematconvenioprazo.fil_codigo = old.fil_codigo and
        examematconvenioprazo.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematconvenioprazo.'';
    end if;

    select count(*) into numrows
      from loteapoio
      where
        loteapoio.fil_codigo = old.fil_codigo and
        loteapoio.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteapoio.'';
    end if;

    delete from exportaapoio
      where
        exportaapoio.fil_codigo = old.fil_codigo and
        exportaapoio.con_codigo = old.con_codigo;

    select count(*) into numrows
      from conveniomensagem
      where
        conveniomensagem.fil_codigo = old.fil_codigo and
        conveniomensagem.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniomensagem.'';
    end if;

    select count(*) into numrows
      from fatura
      where
        fatura.fil_codigo = old.fil_codigo and
        fatura.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela fatura.'';
    end if;

    select count(*) into numrows
      from agrupasituacao
      where
        agrupasituacao.fil_codigo = old.fil_codigo and
        agrupasituacao.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela agrupasituacao.'';
    end if;

    select count(*) into numrows
      from agrupaexameconvenio
      where
        agrupaexameconvenio.fil_codigo = old.fil_codigo and
        agrupaexameconvenio.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela agrupaexameconvenio.'';
    end if;

    delete from examesmatconvenio
      where
        examesmatconvenio.fil_codigo = old.fil_codigo and
        examesmatconvenio.con_codigo = old.con_codigo;

    delete from conveniodesconto
      where
        conveniodesconto.fil_codigo = old.fil_codigo and
        conveniodesconto.con_codigo = old.con_codigo;

    select count(*) into numrows
      from filialfatura
      where
        filialfatura.fil_codigo = old.fil_codigo and
        filialfatura.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela filialfatura.'';
    end if;

    select count(*) into numrows
      from filialfatura
      where
        filialfatura.fil_codfat = old.fil_codigo and
        filialfatura.con_codfat = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela filialfatura.'';
    end if;

    delete from adicionalfatura
      where
        adicionalfatura.fil_codigo = old.fil_codigo and
        adicionalfatura.con_codigo = old.con_codigo;

    delete from despcobranca
      where
        despcobranca.fil_codigo = old.fil_codigo and
        despcobranca.con_codigo = old.con_codigo;

    delete from pacienteconvenio
      where
        pacienteconvenio.fil_codigo = old.fil_codigo and
        pacienteconvenio.con_codigo = old.con_codigo;

    select count(*) into numrows
      from medicoconvenio
      where
        medicoconvenio.fil_codigo = old.fil_codigo and
        medicoconvenio.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela medicoconvenio.'';
    end if;

    delete from destinoconvlayout
      where
        destinoconvlayout.fil_codigo = old.fil_codigo and
        destinoconvlayout.con_codigo = old.con_codigo;

    select count(*) into numrows
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.con_codigo = old.con_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicao.'';
    end if;

    delete from conveniosvencimento
      where
        conveniosvencimento.fil_codigo = old.fil_codigo and
        conveniosvencimento.con_codigo = old.con_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_convenios
after delete on convenios
for each row execute procedure fn_td_convenios();


drop function fn_ti_convenios() cascade;

create function fn_ti_convenios() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    select count(*) into numrows
      from layout
      where
        new.lay_codigoapoio = layout.lay_codigo and
        new.fil_codigo = layout.fil_codigo;
    tmp:=''layout|'';
    
      tmp:=tmp || ''lay_codigo='' || new.lay_codigoapoio || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.lay_codigoapoio is not null and
      new.fil_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela layout. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from rota
      where
        new.fil_codigo = rota.fil_codigo and
        new.rot_codigo = rota.rot_codigo;
    tmp:=''rota|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''rot_codigo='' || new.rot_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.rot_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela rota. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from celulaestoque
      where
        new.fil_codigo = celulaestoque.fil_codigo and
        new.cel_codigo = celulaestoque.cel_codigo;
    tmp:=''celulaestoque|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cel_codigo='' || new.cel_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.cel_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela celulaestoque. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from usuario
      where
        new.usr_codigo = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from layout
      where
        new.lay_codigo = layout.lay_codigo and
        new.fil_codigo = layout.fil_codigo;
    tmp:=''layout|'';
    
      tmp:=tmp || ''lay_codigo='' || new.lay_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.lay_codigo is not null and
      new.fil_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela layout. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from bairro
      where
        new.fil_codigo = bairro.fil_codigo and
        new.bai_codigo = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.bai_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela bairro. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from bairro
      where
        new.fil_codigo = bairro.fil_codigo and
        new.bai_codcobranca = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codcobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.bai_codcobranca is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela bairro. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from cidades
      where
        new.fil_codigo = cidades.fil_codigo and
        new.cid_codigo = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.cid_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from cidades
      where
        new.fil_codigo = cidades.fil_codigo and
        new.cid_codcobranca = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codcobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.cid_codcobranca is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from tabelaprecoexames
      where
        new.fil_codigo = tabelaprecoexames.fil_codigo and
        new.tpe_codigo = tabelaprecoexames.tpe_codigo;
    tmp:=''tabelaprecoexames|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''tpe_codigo='' || new.tpe_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.tpe_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela tabelaprecoexames. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from filiais_postocoleta
      where
        new.fil_codigo = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from prioridade
      where
        new.fil_codigo = prioridade.fil_codigo and
        new.pri_codigo = prioridade.pri_codigo;
    tmp:=''prioridade|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pri_codigo='' || new.pri_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.pri_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela prioridade. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from destino
      where
        new.fil_codigo = destino.fil_codigo and
        new.des_codigo = destino.des_codigo;
    tmp:=''destino|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''des_codigo='' || new.des_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.des_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela destino. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from coletas
      where
        new.fil_codigo = coletas.fil_codigo and
        new.col_codigo = coletas.col_codigo;
    tmp:=''coletas|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''col_codigo='' || new.col_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.col_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela coletas. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_convenios
after insert on convenios
for each row execute procedure fn_ti_convenios();


drop function fn_tu_convenios() cascade;

create function fn_tu_convenios() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosintegracaooperadora.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaintegracaooperadora.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniocotaexamesituacao
      where
        conveniocotaexamesituacao.fil_codigo = old.fil_codigo and
        conveniocotaexamesituacao.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniocotaexamesituacao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniocotaexame
      where
        conveniocotaexame.fil_codigo = old.fil_codigo and
        conveniocotaexame.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniocotaexame.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniomatricula
      where
        conveniomatricula.fil_codigo = old.fil_codigo and
        conveniomatricula.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniomatricula.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniostaxa
      where
        conveniostaxa.fil_codigo = old.fil_codigo and
        conveniostaxa.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniostaxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from convenioshistoricocota
      where
        convenioshistoricocota.fil_codigo = old.fil_codigo and
        convenioshistoricocota.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioshistoricocota.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from convenioapoiado
      where
        convenioapoiado.fil_codigo = old.fil_codigo and
        convenioapoiado.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioapoiado.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from apropriaplanoconta
      where
        apropriaplanoconta.fil_codigo = old.fil_codigo and
        apropriaplanoconta.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela apropriaplanoconta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from apropriacentrocusto
      where
        apropriacentrocusto.fil_codigo = old.fil_codigo and
        apropriacentrocusto.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela apropriacentrocusto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from contrassenharequisicao
      where
        contrassenharequisicao.fil_codigo = old.fil_codigo and
        contrassenharequisicao.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela contrassenharequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from convenioignorarecebimento
      where
        convenioignorarecebimento.fil_codigo = old.fil_codigo and
        convenioignorarecebimento.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioignorarecebimento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from materialenviado
      where
        materialenviado.fil_codigo = old.fil_codigo and
        materialenviado.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialenviado.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from faturarequisicao
      where
        faturarequisicao.fil_codigo = old.fil_codigo and
        faturarequisicao.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela faturarequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.con_codrepasse = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniosrepasse
      where
        conveniosrepasse.fil_codigo = old.fil_codigo and
        conveniosrepasse.con_codrepasse = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosrepasse.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniosrepasse
      where
        conveniosrepasse.fil_codigo = old.fil_codigo and
        conveniosrepasse.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosrepasse.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniospreco
      where
        conveniospreco.fil_codigo = old.fil_codigo and
        conveniospreco.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniospreco.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from orcamentoconvenio
      where
        orcamentoconvenio.fil_codigo = old.fil_codigo and
        orcamentoconvenio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamentoconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from convenioentidade
      where
        convenioentidade.fil_codigo = old.fil_codigo and
        convenioentidade.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioentidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_codigo and
        notafiscal.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela notafiscal.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.fil_codigo = old.fil_codigo and
        receberpagar.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela receberpagar.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from convenioscontatos
      where
        convenioscontatos.fil_codigo = old.fil_codigo and
        convenioscontatos.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioscontatos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from medicoconvenioproibido
      where
        medicoconvenioproibido.fil_codigo = old.fil_codigo and
        medicoconvenioproibido.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medicoconvenioproibido.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from medicoconveniotiss
      where
        medicoconveniotiss.fil_codigo = old.fil_codigo and
        medicoconveniotiss.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medicoconveniotiss.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from paciente
      where
        paciente.fil_codigo = old.fil_codigo and
        paciente.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela paciente.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from examematconvenioprazo
      where
        examematconvenioprazo.fil_codigo = old.fil_codigo and
        examematconvenioprazo.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematconvenioprazo.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from loteapoio
      where
        loteapoio.fil_codigo = old.fil_codigo and
        loteapoio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteapoio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from exportaapoio
      where
        exportaapoio.fil_codigo = old.fil_codigo and
        exportaapoio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaapoio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniomensagem
      where
        conveniomensagem.fil_codigo = old.fil_codigo and
        conveniomensagem.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniomensagem.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from fatura
      where
        fatura.fil_codigo = old.fil_codigo and
        fatura.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela fatura.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from agrupasituacao
      where
        agrupasituacao.fil_codigo = old.fil_codigo and
        agrupasituacao.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agrupasituacao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from agrupaexameconvenio
      where
        agrupaexameconvenio.fil_codigo = old.fil_codigo and
        agrupaexameconvenio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agrupaexameconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from examesmatconvenio
      where
        examesmatconvenio.fil_codigo = old.fil_codigo and
        examesmatconvenio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesmatconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniodesconto
      where
        conveniodesconto.fil_codigo = old.fil_codigo and
        conveniodesconto.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniodesconto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from filialfatura
      where
        filialfatura.fil_codigo = old.fil_codigo and
        filialfatura.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialfatura.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from filialfatura
      where
        filialfatura.fil_codfat = old.fil_codigo and
        filialfatura.con_codfat = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialfatura.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from adicionalfatura
      where
        adicionalfatura.fil_codigo = old.fil_codigo and
        adicionalfatura.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela adicionalfatura.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from despcobranca
      where
        despcobranca.fil_codigo = old.fil_codigo and
        despcobranca.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela despcobranca.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from pacienteconvenio
      where
        pacienteconvenio.fil_codigo = old.fil_codigo and
        pacienteconvenio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from medicoconvenio
      where
        medicoconvenio.fil_codigo = old.fil_codigo and
        medicoconvenio.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medicoconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from destinoconvlayout
      where
        destinoconvlayout.fil_codigo = old.fil_codigo and
        destinoconvlayout.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela destinoconvlayout.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.con_codigo <> new.con_codigo) then
    select count(*)
      from conveniosvencimento
      where
        conveniosvencimento.fil_codigo = old.fil_codigo and
        conveniosvencimento.con_codigo = old.con_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosvencimento.'';
    end if;
  end if;
  select count(*) into numrows
    from layout
    where
      new.lay_codigoapoio = layout.lay_codigo and
      new.fil_codigo = layout.fil_codigo;
    tmp:=''layout|'';
    
      tmp:=tmp || ''lay_codigo='' || new.lay_codigoapoio || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.lay_codigoapoio is not null and
    new.fil_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela layout. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from rota
    where
      new.fil_codigo = rota.fil_codigo and
      new.rot_codigo = rota.rot_codigo;
    tmp:=''rota|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''rot_codigo='' || new.rot_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.rot_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela rota. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from celulaestoque
    where
      new.fil_codigo = celulaestoque.fil_codigo and
      new.cel_codigo = celulaestoque.cel_codigo;
    tmp:=''celulaestoque|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cel_codigo='' || new.cel_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cel_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela celulaestoque. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from usuario
    where
      new.usr_codigo = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela usuario. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from layout
    where
      new.lay_codigo = layout.lay_codigo and
      new.fil_codigo = layout.fil_codigo;
    tmp:=''layout|'';
    
      tmp:=tmp || ''lay_codigo='' || new.lay_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.lay_codigo is not null and
    new.fil_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela layout. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from bairro
    where
      new.fil_codigo = bairro.fil_codigo and
      new.bai_codigo = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.bai_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela bairro. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from bairro
    where
      new.fil_codigo = bairro.fil_codigo and
      new.bai_codcobranca = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codcobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.bai_codcobranca is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela bairro. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from cidades
    where
      new.fil_codigo = cidades.fil_codigo and
      new.cid_codigo = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cid_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from cidades
    where
      new.fil_codigo = cidades.fil_codigo and
      new.cid_codcobranca = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codcobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cid_codcobranca is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from tabelaprecoexames
    where
      new.fil_codigo = tabelaprecoexames.fil_codigo and
      new.tpe_codigo = tabelaprecoexames.tpe_codigo;
    tmp:=''tabelaprecoexames|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''tpe_codigo='' || new.tpe_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.tpe_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela tabelaprecoexames. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from filiais_postocoleta
    where
      new.fil_codigo = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from prioridade
    where
      new.fil_codigo = prioridade.fil_codigo and
      new.pri_codigo = prioridade.pri_codigo;
    tmp:=''prioridade|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pri_codigo='' || new.pri_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.pri_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela prioridade. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from destino
    where
      new.fil_codigo = destino.fil_codigo and
      new.des_codigo = destino.des_codigo;
    tmp:=''destino|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''des_codigo='' || new.des_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.des_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela destino. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from coletas
    where
      new.fil_codigo = coletas.fil_codigo and
      new.col_codigo = coletas.col_codigo;
    tmp:=''coletas|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''col_codigo='' || new.col_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.col_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela coletas. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_convenios
after update on convenios
for each row execute procedure fn_tu_convenios();


--drop function fn_ti_conveniosintegracaooperadora() cascade;

create function fn_ti_conveniosintegracaooperadora() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    select count(*) into numrows
      from examematcoleta
      where
        new.fil_codigo = examematcoleta.fil_codigo and
        new.exa_kodigo = examematcoleta.exa_codigo and
        new.mco_kodigo = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_kodigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_kodigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela examematcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from examematcoleta
      where
        new.fil_codigo = examematcoleta.fil_codigo and
        new.exa_codigo = examematcoleta.exa_codigo and
        new.mco_codigo = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela examematcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from convenios
      where
        new.fil_codigo = convenios.fil_codigo and
        new.con_codigo = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela convenios. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_conveniosintegracaooperadora
after insert on conveniosintegracaooperadora
for each row execute procedure fn_ti_conveniosintegracaooperadora();


--drop function fn_tu_conveniosintegracaooperadora() cascade;

create function fn_tu_conveniosintegracaooperadora() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  select count(*) into numrows
    from examematcoleta
    where
      new.fil_codigo = examematcoleta.fil_codigo and
      new.exa_kodigo = examematcoleta.exa_codigo and
      new.mco_kodigo = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_kodigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_kodigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela examematcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from examematcoleta
    where
      new.fil_codigo = examematcoleta.fil_codigo and
      new.exa_codigo = examematcoleta.exa_codigo and
      new.mco_codigo = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela examematcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from convenios
    where
      new.fil_codigo = convenios.fil_codigo and
      new.con_codigo = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela convenios. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_conveniosintegracaooperadora
after update on conveniosintegracaooperadora
for each row execute procedure fn_tu_conveniosintegracaooperadora();


drop function fn_td_examematcoleta() cascade;

create function fn_td_examematcoleta() returns opaque as '
declare
	numrows integer;										 
begin
    select count(*) into numrows
      from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.exa_kodigo = old.exa_codigo and
        conveniosintegracaooperadora.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniosintegracaooperadora.'';
    end if;

    select count(*) into numrows
      from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.exa_codigo = old.exa_codigo and
        conveniosintegracaooperadora.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniosintegracaooperadora.'';
    end if;

    delete from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.exa_codigo = old.exa_codigo and
        exportaintegracaooperadora.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from examecorrelacaoconferencia
      where
        examecorrelacaoconferencia.fil_codigo = old.fil_codigo and
        examecorrelacaoconferencia.exa_kodigo = old.exa_codigo and
        examecorrelacaoconferencia.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examecorrelacaoconferencia.'';
    end if;

    delete from examecorrelacaoconferencia
      where
        examecorrelacaoconferencia.fil_codigo = old.fil_codigo and
        examecorrelacaoconferencia.exa_codigo = old.exa_codigo and
        examecorrelacaoconferencia.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from loteexternoexamerequisicaodesm
      where
        loteexternoexamerequisicaodesm.fil_codigo = old.fil_codigo and
        loteexternoexamerequisicaodesm.exa_kodigo = old.exa_codigo and
        loteexternoexamerequisicaodesm.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteexternoexamerequisicaodesm.'';
    end if;

    select count(*) into numrows
      from conveniocotaexame
      where
        conveniocotaexame.fil_codigo = old.fil_codigo and
        conveniocotaexame.exa_codigo = old.exa_codigo and
        conveniocotaexame.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniocotaexame.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.exa_codigopai = old.exa_codigo and
        examerequisicao.mco_codigopai = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicao.'';
    end if;

    select count(*) into numrows
      from examematcoletataxa
      where
        examematcoletataxa.fil_codigo = old.fil_codigo and
        examematcoletataxa.exa_codigo = old.exa_codigo and
        examematcoletataxa.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematcoletataxa.'';
    end if;

    delete from detalhetabelaprecometodologia
      where
        detalhetabelaprecometodologia.fil_codigo = old.fil_codigo and
        detalhetabelaprecometodologia.exa_codigo = old.exa_codigo and
        detalhetabelaprecometodologia.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from examerequisicaoweb
      where
        examerequisicaoweb.fil_codigo = old.fil_codigo and
        examerequisicaoweb.exa_codigo = old.exa_codigo and
        examerequisicaoweb.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaoweb.'';
    end if;

    select count(*) into numrows
      from examematcoletalabexterno
      where
        examematcoletalabexterno.fil_codigo = old.fil_codigo and
        examematcoletalabexterno.exa_codigo = old.exa_codigo and
        examematcoletalabexterno.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematcoletalabexterno.'';
    end if;

    select count(*) into numrows
      from contrassenharequisicaoexame
      where
        contrassenharequisicaoexame.fil_codigo = old.fil_codigo and
        contrassenharequisicaoexame.exa_codigo = old.exa_codigo and
        contrassenharequisicaoexame.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela contrassenharequisicaoexame.'';
    end if;

    select count(*) into numrows
      from examerequisicaoguiaagrupada
      where
        examerequisicaoguiaagrupada.fil_codigo = old.fil_codigo and
        examerequisicaoguiaagrupada.exa_codfilho = old.exa_codigo and
        examerequisicaoguiaagrupada.mco_codfilho = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaoguiaagrupada.'';
    end if;

    select count(*) into numrows
      from conveniospreco
      where
        conveniospreco.fil_codigo = old.fil_codigo and
        conveniospreco.exa_codigo = old.exa_codigo and
        conveniospreco.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conveniospreco.'';
    end if;

    select count(*) into numrows
      from orcamentoconvenioexame
      where
        orcamentoconvenioexame.fil_codigo = old.fil_codigo and
        orcamentoconvenioexame.exa_codigo = old.exa_codigo and
        orcamentoconvenioexame.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela orcamentoconvenioexame.'';
    end if;

    delete from examematcoletaitemplanilha
      where
        examematcoletaitemplanilha.fil_codigo = old.fil_codigo and
        examematcoletaitemplanilha.exa_codigo = old.exa_codigo and
        examematcoletaitemplanilha.mco_codigo = old.mco_codigo;

    delete from examematgrupo
      where
        examematgrupo.fil_codigo = old.fil_codigo and
        examematgrupo.exa_codigo = old.exa_codigo and
        examematgrupo.mco_codigo = old.mco_codigo;

    delete from examematconvenioprazo
      where
        examematconvenioprazo.fil_codigo = old.fil_codigo and
        examematconvenioprazo.exa_codigo = old.exa_codigo and
        examematconvenioprazo.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from faturaexamerequisicao
      where
        faturaexamerequisicao.fil_codigo = old.fil_codigo and
        faturaexamerequisicao.exa_codfilho = old.exa_codigo and
        faturaexamerequisicao.mco_codfilho = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela faturaexamerequisicao.'';
    end if;

    select count(*) into numrows
      from exameagrupasituacao
      where
        exameagrupasituacao.fil_codigo = old.fil_codigo and
        exameagrupasituacao.exa_codigo = old.exa_codigo and
        exameagrupasituacao.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela exameagrupasituacao.'';
    end if;

    select count(*) into numrows
      from exameagrupaexameconvenio
      where
        exameagrupaexameconvenio.fil_codigo = old.fil_codigo and
        exameagrupaexameconvenio.exa_kodigo = old.exa_codigo and
        exameagrupaexameconvenio.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela exameagrupaexameconvenio.'';
    end if;

    delete from agrupaexameconvenio
      where
        agrupaexameconvenio.fil_codigo = old.fil_codigo and
        agrupaexameconvenio.exa_codigo = old.exa_codigo and
        agrupaexameconvenio.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from interfaceexamerequisicaodesm
      where
        interfaceexamerequisicaodesm.fil_codigo = old.fil_codigo and
        interfaceexamerequisicaodesm.exa_kodigo = old.exa_codigo and
        interfaceexamerequisicaodesm.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela interfaceexamerequisicaodesm.'';
    end if;

    select count(*) into numrows
      from interfaceexmreqsimplesdesm
      where
        interfaceexmreqsimplesdesm.fil_codigo = old.fil_codigo and
        interfaceexmreqsimplesdesm.exa_kodigo = old.exa_codigo and
        interfaceexmreqsimplesdesm.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela interfaceexmreqsimplesdesm.'';
    end if;

    delete from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.exa_codigo = old.exa_codigo and
        examescontrole.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from examematintdesmembrar
      where
        examematintdesmembrar.fil_codigo = old.fil_codigo and
        examematintdesmembrar.exa_kodigo = old.exa_codigo and
        examematintdesmembrar.mco_kodigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examematintdesmembrar.'';
    end if;

    delete from examematinterface
      where
        examematinterface.fil_codigo = old.fil_codigo and
        examematinterface.exa_codigo = old.exa_codigo and
        examematinterface.mco_codigo = old.mco_codigo;

    delete from examesprincipios
      where
        examesprincipios.fil_codigo = old.fil_codigo and
        examesprincipios.exa_codigo = old.exa_codigo and
        examesprincipios.mco_codigo = old.mco_codigo;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.exa_codigo = old.exa_codigo and
        examerequisicao.mco_codigo = old.mco_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicao.'';
    end if;

    delete from examesmatconvenio
      where
        examesmatconvenio.fil_codigo = old.fil_codigo and
        examesmatconvenio.exa_codigo = old.exa_codigo and
        examesmatconvenio.mco_codigo = old.mco_codigo;

    delete from detalhetabelapreco
      where
        detalhetabelapreco.fil_codigo = old.fil_codigo and
        detalhetabelapreco.exa_codigo = old.exa_codigo and
        detalhetabelapreco.mco_codigo = old.mco_codigo;

    delete from materialexame
      where
        materialexame.fil_codigo = old.fil_codigo and
        materialexame.exa_codigo = old.exa_codigo and
        materialexame.mco_codigo = old.mco_codigo;

    delete from reciptriagem
      where
        reciptriagem.fil_codigo = old.fil_codigo and
        reciptriagem.exa_codigo = old.exa_codigo and
        reciptriagem.mco_codigo = old.mco_codigo;

    delete from examelayout
      where
        examelayout.fil_codigo = old.fil_codigo and
        examelayout.exa_codigo = old.exa_codigo and
        examelayout.mco_codigo = old.mco_codigo;

    delete from recipcoleta
      where
        recipcoleta.fil_codigo = old.fil_codigo and
        recipcoleta.exa_codigo = old.exa_codigo and
        recipcoleta.mco_codigo = old.mco_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_examematcoleta
after delete on examematcoleta
for each row execute procedure fn_td_examematcoleta();


drop function fn_ti_examematcoleta() cascade;

create function fn_ti_examematcoleta() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    select count(*) into numrows
      from metodologia
      where
        new.fil_codigo = metodologia.fil_codigo and
        new.met_codigo = metodologia.met_codigo;
    tmp:=''metodologia|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''met_codigo='' || new.met_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.met_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela metodologia. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from prazoentrega
      where
        new.fil_codigo = prazoentrega.fil_codigo and
        new.prz_codigo = prazoentrega.prz_codigo;
    tmp:=''prazoentrega|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''prz_codigo='' || new.prz_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.prz_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela prazoentrega. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from materialcoleta
      where
        new.fil_codigo = materialcoleta.fil_codigo and
        new.mco_codigo = materialcoleta.mco_codigo;
    tmp:=''materialcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela materialcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from exames
      where
        new.fil_codigo = exames.fil_codigo and
        new.exa_codigo = exames.exa_codigo;
    tmp:=''exames|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela exames. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_examematcoleta
after insert on examematcoleta
for each row execute procedure fn_ti_examematcoleta();


drop function fn_tu_examematcoleta() cascade;

create function fn_tu_examematcoleta() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.exa_kodigo = old.exa_codigo and
        conveniosintegracaooperadora.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosintegracaooperadora.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from conveniosintegracaooperadora
      where
        conveniosintegracaooperadora.fil_codigo = old.fil_codigo and
        conveniosintegracaooperadora.exa_codigo = old.exa_codigo and
        conveniosintegracaooperadora.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniosintegracaooperadora.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.exa_codigo = old.exa_codigo and
        exportaintegracaooperadora.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaintegracaooperadora.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examecorrelacaoconferencia
      where
        examecorrelacaoconferencia.fil_codigo = old.fil_codigo and
        examecorrelacaoconferencia.exa_kodigo = old.exa_codigo and
        examecorrelacaoconferencia.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examecorrelacaoconferencia.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examecorrelacaoconferencia
      where
        examecorrelacaoconferencia.fil_codigo = old.fil_codigo and
        examecorrelacaoconferencia.exa_codigo = old.exa_codigo and
        examecorrelacaoconferencia.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examecorrelacaoconferencia.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from loteexternoexamerequisicaodesm
      where
        loteexternoexamerequisicaodesm.fil_codigo = old.fil_codigo and
        loteexternoexamerequisicaodesm.exa_kodigo = old.exa_codigo and
        loteexternoexamerequisicaodesm.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternoexamerequisicaodesm.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from conveniocotaexame
      where
        conveniocotaexame.fil_codigo = old.fil_codigo and
        conveniocotaexame.exa_codigo = old.exa_codigo and
        conveniocotaexame.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniocotaexame.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.exa_codigopai = old.exa_codigo and
        examerequisicao.mco_codigopai = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematcoletataxa
      where
        examematcoletataxa.fil_codigo = old.fil_codigo and
        examematcoletataxa.exa_codigo = old.exa_codigo and
        examematcoletataxa.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematcoletataxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from detalhetabelaprecometodologia
      where
        detalhetabelaprecometodologia.fil_codigo = old.fil_codigo and
        detalhetabelaprecometodologia.exa_codigo = old.exa_codigo and
        detalhetabelaprecometodologia.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela detalhetabelaprecometodologia.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examerequisicaoweb
      where
        examerequisicaoweb.fil_codigo = old.fil_codigo and
        examerequisicaoweb.exa_codigo = old.exa_codigo and
        examerequisicaoweb.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematcoletalabexterno
      where
        examematcoletalabexterno.fil_codigo = old.fil_codigo and
        examematcoletalabexterno.exa_codigo = old.exa_codigo and
        examematcoletalabexterno.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematcoletalabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from contrassenharequisicaoexame
      where
        contrassenharequisicaoexame.fil_codigo = old.fil_codigo and
        contrassenharequisicaoexame.exa_codigo = old.exa_codigo and
        contrassenharequisicaoexame.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela contrassenharequisicaoexame.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examerequisicaoguiaagrupada
      where
        examerequisicaoguiaagrupada.fil_codigo = old.fil_codigo and
        examerequisicaoguiaagrupada.exa_codfilho = old.exa_codigo and
        examerequisicaoguiaagrupada.mco_codfilho = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoguiaagrupada.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from conveniospreco
      where
        conveniospreco.fil_codigo = old.fil_codigo and
        conveniospreco.exa_codigo = old.exa_codigo and
        conveniospreco.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conveniospreco.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from orcamentoconvenioexame
      where
        orcamentoconvenioexame.fil_codigo = old.fil_codigo and
        orcamentoconvenioexame.exa_codigo = old.exa_codigo and
        orcamentoconvenioexame.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamentoconvenioexame.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematcoletaitemplanilha
      where
        examematcoletaitemplanilha.fil_codigo = old.fil_codigo and
        examematcoletaitemplanilha.exa_codigo = old.exa_codigo and
        examematcoletaitemplanilha.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematcoletaitemplanilha.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematgrupo
      where
        examematgrupo.fil_codigo = old.fil_codigo and
        examematgrupo.exa_codigo = old.exa_codigo and
        examematgrupo.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematgrupo.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematconvenioprazo
      where
        examematconvenioprazo.fil_codigo = old.fil_codigo and
        examematconvenioprazo.exa_codigo = old.exa_codigo and
        examematconvenioprazo.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematconvenioprazo.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from faturaexamerequisicao
      where
        faturaexamerequisicao.fil_codigo = old.fil_codigo and
        faturaexamerequisicao.exa_codfilho = old.exa_codigo and
        faturaexamerequisicao.mco_codfilho = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela faturaexamerequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from exameagrupasituacao
      where
        exameagrupasituacao.fil_codigo = old.fil_codigo and
        exameagrupasituacao.exa_codigo = old.exa_codigo and
        exameagrupasituacao.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exameagrupasituacao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from exameagrupaexameconvenio
      where
        exameagrupaexameconvenio.fil_codigo = old.fil_codigo and
        exameagrupaexameconvenio.exa_kodigo = old.exa_codigo and
        exameagrupaexameconvenio.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exameagrupaexameconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from agrupaexameconvenio
      where
        agrupaexameconvenio.fil_codigo = old.fil_codigo and
        agrupaexameconvenio.exa_codigo = old.exa_codigo and
        agrupaexameconvenio.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agrupaexameconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from interfaceexamerequisicaodesm
      where
        interfaceexamerequisicaodesm.fil_codigo = old.fil_codigo and
        interfaceexamerequisicaodesm.exa_kodigo = old.exa_codigo and
        interfaceexamerequisicaodesm.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexamerequisicaodesm.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from interfaceexmreqsimplesdesm
      where
        interfaceexmreqsimplesdesm.fil_codigo = old.fil_codigo and
        interfaceexmreqsimplesdesm.exa_kodigo = old.exa_codigo and
        interfaceexmreqsimplesdesm.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexmreqsimplesdesm.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.exa_codigo = old.exa_codigo and
        examescontrole.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examescontrole.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematintdesmembrar
      where
        examematintdesmembrar.fil_codigo = old.fil_codigo and
        examematintdesmembrar.exa_kodigo = old.exa_codigo and
        examematintdesmembrar.mco_kodigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematintdesmembrar.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examematinterface
      where
        examematinterface.fil_codigo = old.fil_codigo and
        examematinterface.exa_codigo = old.exa_codigo and
        examematinterface.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematinterface.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examesprincipios
      where
        examesprincipios.fil_codigo = old.fil_codigo and
        examesprincipios.exa_codigo = old.exa_codigo and
        examesprincipios.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesprincipios.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.exa_codigo = old.exa_codigo and
        examerequisicao.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examesmatconvenio
      where
        examesmatconvenio.fil_codigo = old.fil_codigo and
        examesmatconvenio.exa_codigo = old.exa_codigo and
        examesmatconvenio.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesmatconvenio.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from detalhetabelapreco
      where
        detalhetabelapreco.fil_codigo = old.fil_codigo and
        detalhetabelapreco.exa_codigo = old.exa_codigo and
        detalhetabelapreco.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela detalhetabelapreco.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from materialexame
      where
        materialexame.fil_codigo = old.fil_codigo and
        materialexame.exa_codigo = old.exa_codigo and
        materialexame.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialexame.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from reciptriagem
      where
        reciptriagem.fil_codigo = old.fil_codigo and
        reciptriagem.exa_codigo = old.exa_codigo and
        reciptriagem.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela reciptriagem.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from examelayout
      where
        examelayout.fil_codigo = old.fil_codigo and
        examelayout.exa_codigo = old.exa_codigo and
        examelayout.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examelayout.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo) then
    select count(*)
      from recipcoleta
      where
        recipcoleta.fil_codigo = old.fil_codigo and
        recipcoleta.exa_codigo = old.exa_codigo and
        recipcoleta.mco_codigo = old.mco_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela recipcoleta.'';
    end if;
  end if;
  select count(*) into numrows
    from metodologia
    where
      new.fil_codigo = metodologia.fil_codigo and
      new.met_codigo = metodologia.met_codigo;
    tmp:=''metodologia|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''met_codigo='' || new.met_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.met_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela metodologia. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from prazoentrega
    where
      new.fil_codigo = prazoentrega.fil_codigo and
      new.prz_codigo = prazoentrega.prz_codigo;
    tmp:=''prazoentrega|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''prz_codigo='' || new.prz_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.prz_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela prazoentrega. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from materialcoleta
    where
      new.fil_codigo = materialcoleta.fil_codigo and
      new.mco_codigo = materialcoleta.mco_codigo;
    tmp:=''materialcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela materialcoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from exames
    where
      new.fil_codigo = exames.fil_codigo and
      new.exa_codigo = exames.exa_codigo;
    tmp:=''exames|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela exames. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_examematcoleta
after update on examematcoleta
for each row execute procedure fn_tu_examematcoleta();




insert into atualizacoes(atu_nome) values ('v170600001_260717.sql');


create sequence unimedvtrp_sequence;

insert into atualizacoes(atu_nome) values ('v170600002_080917.sql');

