
alter table baixa
  add bxa_irrfvalorretido numeric(15, 2),
  add bxa_issvalorretido numeric(15, 2),
  add bxa_pisvalorretido numeric(15, 2),
  add bxa_csllvalorretido numeric(15, 2),
  add bxa_cofinsvalorretido numeric(15, 2),
  add bxa_inssvalorretido numeric(15, 2);


drop index xpkambbpa;
alter table ambbpa drop constraint ambbpa_pkey;

alter table ambbpa
       add primary key (fil_codigo, abp_codigoamb, abp_servico);

create unique index xpkambbpa on ambbpa(fil_codigo, abp_codigoamb, abp_servico);

create table logids (
       ids_codigo           serial not null,
       ids_datahora         timestamp,
       ids_mensagem         text,
       ids_exportado        boolean,
       usr_codigo           varchar(20),
       fil_codigo           integer,
       exa_codigo           varchar(5),
       mco_codigo           integer,
       req_codigo           integer
);

create unique index xpklogids on logids
(
       ids_codigo
);

create index xif1logids on logids
(
       usr_codigo
);

create index xif2logids on logids
(
       fil_codigo,
       exa_codigo,
       mco_codigo,
       req_codigo
);


alter table logids
       add primary key (ids_codigo);


drop function fn_td_examerequisicao() cascade;

create function fn_td_examerequisicao() returns opaque as '
declare 
  numrows integer;
begin

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

delete from examerequisicaohistoricosetor
      where
        examerequisicaohistoricosetor.fil_codigo = old.fil_codigo and
        examerequisicaohistoricosetor.exa_codigo = old.exa_codigo and
        examerequisicaohistoricosetor.mco_codigo = old.mco_codigo and
        examerequisicaohistoricosetor.req_codigo = old.req_codigo;

delete from examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.fil_codigo = old.fil_codigo and
        examerequisicaoetiquetas.exa_codigo = old.exa_codigo and
        examerequisicaoetiquetas.mco_codigo = old.mco_codigo and
        examerequisicaoetiquetas.req_codigo = old.req_codigo;

delete from examerequisicaoemailatraso
      where
        examerequisicaoemailatraso.fil_codigo = old.fil_codigo and
        examerequisicaoemailatraso.exa_codigo = old.exa_codigo and
        examerequisicaoemailatraso.mco_codigo = old.mco_codigo and
        examerequisicaoemailatraso.req_codigo = old.req_codigo;

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

delete from examerequisicaoincerteza
      where
        examerequisicaoincerteza.fil_codigo = old.fil_codigo and
        examerequisicaoincerteza.exa_codigo = old.exa_codigo and
        examerequisicaoincerteza.mco_codigo = old.mco_codigo and
        examerequisicaoincerteza.req_codigo = old.req_codigo;

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

delete from examerequisicaoresultado
      where
        examerequisicaoresultado.fil_codigo = old.fil_codigo and
        examerequisicaoresultado.exa_codigo = old.exa_codigo and
        examerequisicaoresultado.mco_codigo = old.mco_codigo and
        examerequisicaoresultado.req_codigo = old.req_codigo;

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

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

delete from examerequisicaotrocas
      where
        examerequisicaotrocas.fil_codigo = old.fil_codigo and
        examerequisicaotrocas.exa_codigo = old.exa_codigo and
        examerequisicaotrocas.mco_codigo = old.mco_codigo and
        examerequisicaotrocas.req_codigo = old.req_codigo;

delete from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.fil_codigo = old.fil_codigo and
        examerequisicaohistoricolaudo.exa_codigo = old.exa_codigo and
        examerequisicaohistoricolaudo.mco_codigo = old.mco_codigo and
        examerequisicaohistoricolaudo.req_codigo = old.req_codigo;

delete from examerequisicaosetor
      where
        examerequisicaosetor.fil_codigo = old.fil_codigo and
        examerequisicaosetor.exa_codigo = old.exa_codigo and
        examerequisicaosetor.mco_codigo = old.mco_codigo and
        examerequisicaosetor.req_codigo = old.req_codigo;

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

delete from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.exa_codigo = old.exa_codigo and
        examerequisicaosituacoes.mco_codigo = old.mco_codigo and
        examerequisicaosituacoes.req_codigo = old.req_codigo;

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

delete from examerequisicaorecipiente
      where
        examerequisicaorecipiente.fil_codigo = old.fil_codigo and
        examerequisicaorecipiente.exa_codigo = old.exa_codigo and
        examerequisicaorecipiente.mco_codigo = old.mco_codigo and
        examerequisicaorecipiente.req_codigo = old.req_codigo;

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

delete from interfaceexamerequisicao
      where
        interfaceexamerequisicao.fil_codigo = old.fil_codigo and
        interfaceexamerequisicao.exa_codigo = old.exa_codigo and
        interfaceexamerequisicao.mco_codigo = old.mco_codigo and
        interfaceexamerequisicao.req_codigo = old.req_codigo;

delete from materialexamerequis
      where
        materialexamerequis.fil_codigo = old.fil_codigo and
        materialexamerequis.exa_codigo = old.exa_codigo and
        materialexamerequis.mco_codigo = old.mco_codigo and
        materialexamerequis.req_codigo = old.req_codigo;



delete from examerequisicaoresultado
 where fil_codigo = old.fil_codigo
   and req_codigo = old.req_codigo
   and exa_codigo = old.exa_codigo
   and mco_codigo = old.mco_codigo;


return old;

end'
language 'plpgsql';



create trigger td_examerequisicao 
  after delete on examerequisicao
for each row execute procedure fn_td_examerequisicao();


drop function fn_ti_examerequisicao() cascade;

create function fn_ti_examerequisicao() returns opaque as '
declare 
  numrows integer;
  tmp varchar;
begin
select count(*) into numrows
      from usuario
      where
        new.usr_codduplaconferencia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codduplaconferencia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codduplaconferencia 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 usuario
      where
        new.usr_codsolicitadotiss = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codsolicitadotiss || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codsolicitadotiss 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 examematcoleta
      where
        new.fil_codigo = examematcoleta.fil_codigo and
        new.exa_codigopai = examematcoleta.exa_codigo and
        new.mco_codigopai = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigopai || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigopai || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.exa_codigopai is not null and
      new.mco_codigopai is not null and
      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 usuario
      where
        new.usr_codcoletar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcoletar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codcoletar 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 usuario
      where
        new.usr_codtransportechegada = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportechegada || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtransportechegada 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 usuario
      where
        new.usr_codtransportesaida = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportesaida || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtransportesaida 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 usuario
      where
        new.usr_codtrocalayout = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtrocalayout || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtrocalayout 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 usuario
      where
        new.usr_codalteracaopreco = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codalteracaopreco || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codalteracaopreco 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 usuario
      where
        new.usr_codrecoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrecoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codrecoleta 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 usuario
      where
        new.usr_codfaturarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfaturarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codfaturarepasse 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 usuario
      where
        new.usr_codrepeticao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrepeticao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codrepeticao 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 usuario
      where
        new.usr_codguia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codguia 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 usuario
      where
        new.usr_codexcluido = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codexcluido || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codexcluido 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 usuario
      where
        new.usr_codmaterialsetor = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterialsetor || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmaterialsetor 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 usuario
      where
        new.usr_codloteexterno = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codloteexterno || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codloteexterno 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 usuario
      where
        new.usr_codetqtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codetqtriagem 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 usuario
      where
        new.usr_codetqcoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqcoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codetqcoleta 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 usuario
      where
        new.usr_codtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtriagem 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 usuario
      where
        new.usr_codnaofaturar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codnaofaturar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codnaofaturar 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 usuario
      where
        new.usr_codcortesia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcortesia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codcortesia 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 usuario
      where
        new.usr_codmapa = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmapa || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmapa 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 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 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 usuario
      where
        new.usr_codimpressao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codimpressao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codimpressao 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 usuario
      where
        new.usr_codentrega = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codentrega || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codentrega 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 usuario
      where
        new.usr_codfatura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfatura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codfatura 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 usuario
      where
        new.usr_codmaterial = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterial || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmaterial 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 usuario
      where
        new.usr_coddigitador = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddigitador || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_coddigitador 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 usuario
      where
        new.usr_codassina = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codassina || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codassina 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 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 (
      new.fil_codigo is not null and
      new.mco_codigo is not null and
      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 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 requisicao
      where
        new.fil_codigo = requisicao.fil_codigo and
        new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 requisicao. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;





insert into examerequisicaoresultado(fil_codigo, req_codigo, exa_codigo, mco_codigo, ert_resultado) values (new.fil_codigo, new.req_codigo, new.exa_codigo, new.mco_codigo, new.exr_resultado);

/* troca o valor do campo de resultado na tabela exame requisicao */
new.exr_resultado = ''.'';

return new;

end'
language 'plpgsql';



create trigger ti_examerequisicao 
  after insert on examerequisicao
for each row execute procedure fn_ti_examerequisicao();


drop function fn_tu_b_examerequisicao() cascade;


create function fn_tu_b_examerequisicao() returns opaque as '
declare
  req bigint;
begin

select req_codigo into req from examerequisicaoresultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
if (not found) then
  insert into examerequisicaoresultado(fil_codigo, req_codigo, exa_codigo, mco_codigo) values (new.fil_codigo, new.req_codigo, new.exa_codigo, new.mco_codigo);
end if;


if ((upper(new.exr_situacao) = upper(''l'') or upper(new.exr_situacao) = upper(''c'') or upper(new.exr_situacao) = upper(''i'') or upper(new.exr_situacao) = upper(''e'') or upper(new.exr_situacao) = upper(''p'')) and 
  new.exr_resultado is not null and length(new.exr_resultado) > 0) then
  update examerequisicaoresultado set ert_resultado = new.exr_resultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
end if;

if ((new.exr_situacao is null or new.exr_situacao = '''' or upper(new.exr_situacao) = upper(''f'') or upper(new.exr_situacao) = upper(''t'') or upper(new.exr_situacao) = upper(''r''))) then
  update examerequisicaoresultado set ert_resultado = new.exr_resultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
end if;


/* troca o valor do campo de resultado na tabela exame requisicao */
new.exr_resultado := null;

return new;

end'
language 'plpgsql';



create trigger tu_b_examerequisicao 
  before update on examerequisicao
for each row execute procedure fn_tu_b_examerequisicao();






drop function fn_tu_examerequisicao() cascade;




create function fn_tu_examerequisicao() returns opaque as '
declare 
  numrows integer;
  tmp varchar;
begin
select count(*) into numrows
    from usuario
    where
      new.usr_codduplaconferencia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codduplaconferencia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codduplaconferencia 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 usuario
    where
      new.usr_codsolicitadotiss = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codsolicitadotiss || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codsolicitadotiss 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 examematcoleta
    where
      new.fil_codigo = examematcoleta.fil_codigo and
      new.exa_codigopai = examematcoleta.exa_codigo and
      new.mco_codigopai = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigopai || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigopai || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.exa_codigopai is not null and
    new.mco_codigopai is not null and
    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 usuario
    where
      new.usr_codcoletar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcoletar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codcoletar 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 usuario
    where
      new.usr_codtransportechegada = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportechegada || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtransportechegada 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 usuario
    where
      new.usr_codtransportesaida = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportesaida || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtransportesaida 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 usuario
    where
      new.usr_codtrocalayout = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtrocalayout || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtrocalayout 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 usuario
    where
      new.usr_codalteracaopreco = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codalteracaopreco || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codalteracaopreco 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 usuario
    where
      new.usr_codrecoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrecoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codrecoleta 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 usuario
    where
      new.usr_codfaturarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfaturarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codfaturarepasse 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 usuario
    where
      new.usr_codrepeticao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrepeticao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codrepeticao 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 usuario
    where
      new.usr_codguia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codguia 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 usuario
    where
      new.usr_codexcluido = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codexcluido || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codexcluido 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 usuario
    where
      new.usr_codmaterialsetor = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterialsetor || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmaterialsetor 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 usuario
    where
      new.usr_codloteexterno = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codloteexterno || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codloteexterno 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 usuario
    where
      new.usr_codetqtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codetqtriagem 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 usuario
    where
      new.usr_codetqcoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqcoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codetqcoleta 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 usuario
    where
      new.usr_codtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtriagem 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 usuario
    where
      new.usr_codnaofaturar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codnaofaturar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codnaofaturar 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 usuario
    where
      new.usr_codcortesia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcortesia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codcortesia 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 usuario
    where
      new.usr_codmapa = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmapa || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmapa 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 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 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 usuario
    where
      new.usr_codimpressao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codimpressao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codimpressao 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 usuario
    where
      new.usr_codentrega = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codentrega || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codentrega 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 usuario
    where
      new.usr_codfatura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfatura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codfatura 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 usuario
    where
      new.usr_codmaterial = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterial || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmaterial 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 usuario
    where
      new.usr_coddigitador = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddigitador || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_coddigitador 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 usuario
    where
      new.usr_codassina = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codassina || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codassina 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 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 (
    new.fil_codigo is not null and
    new.mco_codigo is not null and
    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 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 requisicao
    where
      new.fil_codigo = requisicao.fil_codigo and
      new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 requisicao. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logids
      where
        logids.fil_codigo = old.fil_codigo and
        logids.exa_codigo = old.exa_codigo and
        logids.mco_codigo = old.mco_codigo and
        logids.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logids.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohistoricosetor
      where
        examerequisicaohistoricosetor.fil_codigo = old.fil_codigo and
        examerequisicaohistoricosetor.exa_codigo = old.exa_codigo and
        examerequisicaohistoricosetor.mco_codigo = old.mco_codigo and
        examerequisicaohistoricosetor.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricosetor.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.fil_codigo = old.fil_codigo and
        examerequisicaoetiquetas.exa_codigo = old.exa_codigo and
        examerequisicaoetiquetas.mco_codigo = old.mco_codigo and
        examerequisicaoetiquetas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoetiquetas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoemailatraso
      where
        examerequisicaoemailatraso.fil_codigo = old.fil_codigo and
        examerequisicaoemailatraso.exa_codigo = old.exa_codigo and
        examerequisicaoemailatraso.mco_codigo = old.mco_codigo and
        examerequisicaoemailatraso.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoemailatraso.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaodadosbrutos
      where
        examerequisicaodadosbrutos.fil_codigo = old.fil_codigo and
        examerequisicaodadosbrutos.exa_codigo = old.exa_codigo and
        examerequisicaodadosbrutos.mco_codigo = old.mco_codigo and
        examerequisicaodadosbrutos.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaodadosbrutos.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoincerteza
      where
        examerequisicaoincerteza.fil_codigo = old.fil_codigo and
        examerequisicaoincerteza.exa_codigo = old.exa_codigo and
        examerequisicaoincerteza.mco_codigo = old.mco_codigo and
        examerequisicaoincerteza.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoincerteza.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from lotefilialexamerequisicao
      where
        lotefilialexamerequisicao.fil_codigo = old.fil_codigo and
        lotefilialexamerequisicao.exa_codigo = old.exa_codigo and
        lotefilialexamerequisicao.mco_codigo = old.mco_codigo and
        lotefilialexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilialexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoresultado
      where
        examerequisicaoresultado.fil_codigo = old.fil_codigo and
        examerequisicaoresultado.exa_codigo = old.exa_codigo and
        examerequisicaoresultado.mco_codigo = old.mco_codigo and
        examerequisicaoresultado.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoresultado.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaolaminas
      where
        examerequisicaolaminas.fil_codigo = old.fil_codigo and
        examerequisicaolaminas.exa_codigo = old.exa_codigo and
        examerequisicaolaminas.mco_codigo = old.mco_codigo and
        examerequisicaolaminas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaolaminas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohash
      where
        examerequisicaohash.fil_codigo = old.fil_codigo and
        examerequisicaohash.exa_codigo = old.exa_codigo and
        examerequisicaohash.mco_codigo = old.mco_codigo and
        examerequisicaohash.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohash.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaotrocas
      where
        examerequisicaotrocas.fil_codigo = old.fil_codigo and
        examerequisicaotrocas.exa_codigo = old.exa_codigo and
        examerequisicaotrocas.mco_codigo = old.mco_codigo and
        examerequisicaotrocas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaotrocas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.fil_codigo = old.fil_codigo and
        examerequisicaohistoricolaudo.exa_codigo = old.exa_codigo and
        examerequisicaohistoricolaudo.mco_codigo = old.mco_codigo and
        examerequisicaohistoricolaudo.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricolaudo.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaosetor
      where
        examerequisicaosetor.fil_codigo = old.fil_codigo and
        examerequisicaosetor.exa_codigo = old.exa_codigo and
        examerequisicaosetor.mco_codigo = old.mco_codigo and
        examerequisicaosetor.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosetor.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoguiaagrupada
      where
        examerequisicaoguiaagrupada.fil_codigo = old.fil_codigo and
        examerequisicaoguiaagrupada.exa_codigo = old.exa_codigo and
        examerequisicaoguiaagrupada.mco_codigo = old.mco_codigo and
        examerequisicaoguiaagrupada.req_codigo = old.req_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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.exa_codigo = old.exa_codigo and
        examerequisicaosituacoes.mco_codigo = old.mco_codigo and
        examerequisicaosituacoes.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosituacoes.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteexternoexamerequisicao
      where
        loteexternoexamerequisicao.fil_kodigo = old.fil_codigo and
        loteexternoexamerequisicao.exa_codigo = old.exa_codigo and
        loteexternoexamerequisicao.mco_codigo = old.mco_codigo and
        loteexternoexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternoexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaorecipiente
      where
        examerequisicaorecipiente.fil_codigo = old.fil_codigo and
        examerequisicaorecipiente.exa_codigo = old.exa_codigo and
        examerequisicaorecipiente.mco_codigo = old.mco_codigo and
        examerequisicaorecipiente.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaorecipiente.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from faturaexamerequisicao
      where
        faturaexamerequisicao.fil_kodigo = old.fil_codigo and
        faturaexamerequisicao.exa_codigo = old.exa_codigo and
        faturaexamerequisicao.mco_codigo = old.mco_codigo and
        faturaexamerequisicao.req_codigo = old.req_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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from interfaceexamerequisicao
      where
        interfaceexamerequisicao.fil_codigo = old.fil_codigo and
        interfaceexamerequisicao.exa_codigo = old.exa_codigo and
        interfaceexamerequisicao.mco_codigo = old.mco_codigo and
        interfaceexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from materialexamerequis
      where
        materialexamerequis.fil_codigo = old.fil_codigo and
        materialexamerequis.exa_codigo = old.exa_codigo and
        materialexamerequis.mco_codigo = old.mco_codigo and
        materialexamerequis.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialexamerequis.'';
    end if;
  end if;


return new;

end'
language 'plpgsql';



create trigger tu_examerequisicao 
  after update on examerequisicao
for each row execute procedure fn_tu_examerequisicao();




--drop function fn_ti_logids() cascade;

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

    if (
      new.fil_codigo is not null and
      new.exa_codigo is not null and
      new.mco_codigo is not null and
      new.req_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela examerequisicao. 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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_logids
after insert on logids
for each row execute procedure fn_ti_logids();


--drop function fn_tu_logids() cascade;

create function fn_tu_logids() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  select count(*) into numrows
    from examerequisicao
    where
      new.fil_codigo = examerequisicao.fil_codigo and
      new.exa_codigo = examerequisicao.exa_codigo and
      new.mco_codigo = examerequisicao.mco_codigo and
      new.req_codigo = examerequisicao.req_codigo;
    tmp:=''examerequisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.exa_codigo is not null and
    new.mco_codigo is not null and
    new.req_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela examerequisicao. 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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_logids
after update on logids
for each row execute procedure fn_tu_logids();


drop function fn_td_usuario() cascade;

create function fn_td_usuario() returns opaque as '
declare
	numrows integer;										 
begin
    select count(*) into numrows
      from logids
      where
        logids.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela logids.'';
    end if;

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

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

    delete from usuariosenhas
      where
        usuariosenhas.usr_codigo = old.usr_codigo;

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

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

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

    select count(*) into numrows
      from requisicao
      where
        requisicao.usr_coddesconto = old.usr_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 examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaoetiquetas.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codduplaconferencia = old.usr_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 loteexternorequisicao
      where
        loteexternorequisicao.usr_codestorno = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteexternorequisicao.'';
    end if;

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

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

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

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

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

    delete from responsavelcertificado
      where
        responsavelcertificado.usr_codigo = old.usr_codigo;

    select count(*) into numrows
      from requisicao
      where
        requisicao.usr_codelegibilidade = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codsolicitadotiss = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codcoletar = old.usr_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 transfestoquematerial
      where
        transfestoquematerial.usr_codcancelamento = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela transfestoquematerial.'';
    end if;

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

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

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

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

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codtransportechegada = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codtransportesaida = old.usr_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 lotefilial
      where
        lotefilial.usr_codrecebeu = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela lotefilial.'';
    end if;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codtrocalayout = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codalteracaopreco = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicao.'';
    end if;

    delete from usuariocompromisso
      where
        usuariocompromisso.usr_codigo = old.usr_codigo;

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

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

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

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

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

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

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

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

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

    select count(*) into numrows
      from paciente
      where
        paciente.usr_codimpressaocarteira = old.usr_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 materialenviado
      where
        materialenviado.usr_codigo = old.usr_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 materialidentificado
      where
        materialidentificado.usr_codretorno = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela materialidentificado.'';
    end if;

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

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

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

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

    select count(*) into numrows
      from requisicao
      where
        requisicao.usr_codguiarepasse = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codrecoleta = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codfaturarepasse = old.usr_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 receberpagar
      where
        receberpagar.usr_codcomissao = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela receberpagar.'';
    end if;

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

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

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

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

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

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

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

    select count(*) into numrows
      from notafiscal
      where
        notafiscal.usr_codautorizafinanceira = old.usr_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 conferenciaestoque
      where
        conferenciaestoque.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela conferenciaestoque.'';
    end if;

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

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

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

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

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

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

    select count(*) into numrows
      from fatura
      where
        fatura.usr_codcomissao = old.usr_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 pedido
      where
        pedido.usr_codautorizacao = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela pedido.'';
    end if;

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

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

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

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

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

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codrepeticao = old.usr_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 paciente
      where
        paciente.usr_codalteracao = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codguia = old.usr_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 examerequisicaosituacoes
      where
        examerequisicaosituacoes.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaosituacoes.'';
    end if;

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codexcluido = old.usr_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 requisicao
      where
        requisicao.usr_codexcluida = old.usr_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 fatura
      where
        fatura.usr_codcancelamento = old.usr_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 convenios
      where
        convenios.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela convenios.'';
    end if;

    select count(*) into numrows
      from notafiscal
      where
        notafiscal.usr_codreimpressao = old.usr_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 geladeirastemperaturas
      where
        geladeirastemperaturas.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela geladeirastemperaturas.'';
    end if;

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

    delete from usuariofilial
      where
        usuariofilial.usr_codigo = old.usr_codigo;

    select count(*) into numrows
      from notafiscal
      where
        notafiscal.usr_codimpressao = old.usr_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 notafiscal
      where
        notafiscal.usr_codcancelada = old.usr_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 notafiscal
      where
        notafiscal.usr_codigo = old.usr_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 baixa
      where
        baixa.usr_codcancelado = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela baixa.'';
    end if;

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

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

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

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

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codmaterialsetor = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codloteexterno = old.usr_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 loteexterno
      where
        loteexterno.usr_codenvio = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteexterno.'';
    end if;

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

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

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

    delete from usuariomensagem
      where
        usuariomensagem.usr_coddestino = old.usr_codigo;

    select count(*) into numrows
      from conveniomensagem
      where
        conveniomensagem.usr_codigo = old.usr_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 examerequisicaorecipiente
      where
        examerequisicaorecipiente.usr_codtriagem = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicaorecipiente.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codetqtriagem = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codetqcoleta = old.usr_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 loteapoio
      where
        loteapoio.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela loteapoio.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codtriagem = old.usr_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 fatura
      where
        fatura.usr_codconferencia = old.usr_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 fatura
      where
        fatura.usr_codigo = old.usr_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 contrasenha
      where
        contrasenha.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela contrasenha.'';
    end if;

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codnaofaturar = old.usr_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 requisicaousuario
      where
        requisicaousuario.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela requisicaousuario.'';
    end if;

    select count(*) into numrows
      from requisicao
      where
        requisicao.usr_codabertura = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codcortesia = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codmapa = old.usr_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 interfaceexamerequisicao
      where
        interfaceexamerequisicao.usr_codigo = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela interfaceexamerequisicao.'';
    end if;

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

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

    select count(*) into numrows
      from examerequisicao
      where
        examerequisicao.usr_codigo = old.usr_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 requisicao
      where
        requisicao.usr_codigo = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codimpressao = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codentrega = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codfatura = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codmaterial = old.usr_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 examerequisicao
      where
        examerequisicao.usr_coddigitador = old.usr_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 examerequisicao
      where
        examerequisicao.usr_codassina = old.usr_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examerequisicao.'';
    end if;

    delete from usuarioacesso
      where
        usuarioacesso.usr_codigo = old.usr_codigo;

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

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


return old;
end;'
language 'plpgsql';
					
create trigger td_usuario
after delete on usuario
for each row execute procedure fn_td_usuario();


drop function fn_ti_usuario() cascade;

create function fn_ti_usuario() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    select count(*) into numrows
      from tipousuario
      where
        new.tpu_codigo = tipousuario.tpu_codigo;
    tmp:=''tipousuario|'';
    
      tmp:=tmp || ''tpu_codigo='' || new.tpu_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

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


return new;
end;'
language 'plpgsql';
					
create trigger ti_usuario
after insert on usuario
for each row execute procedure fn_ti_usuario();


drop function fn_tu_usuario() cascade;

create function fn_tu_usuario() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from logids
      where
        logids.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logids.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from logvalidalotematerial
      where
        logvalidalotematerial.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logvalidalotematerial.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from material
      where
        material.usr_codavisolote = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela material.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariosenhas
      where
        usuariosenhas.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariosenhas.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from pacienteimagens
      where
        pacienteimagens.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteimagens.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaoimagens
      where
        requisicaoimagens.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoimagens.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from orcamentoconvenio
      where
        orcamentoconvenio.usr_coddesconto = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_coddesconto = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoetiquetas.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codduplaconferencia = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteexternorequisicao
      where
        loteexternorequisicao.usr_codestorno = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternorequisicao.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteexterno
      where
        loteexterno.usr_codestorno = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexterno.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallotehistorico
      where
        materiallotehistorico.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallotehistorico.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.usr_codaberturainicial = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallote.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.usr_codfechado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallote.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.usr_codaberto = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallote.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from responsavelcertificado
      where
        responsavelcertificado.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela responsavelcertificado.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_codelegibilidade = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codsolicitadotiss = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codcoletar = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from transfestoquematerial
      where
        transfestoquematerial.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela transfestoquematerial.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from transfestoque
      where
        transfestoque.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela transfestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaodadosbrutos
      where
        examerequisicaodadosbrutos.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaodadosbrutos.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaoincerteza
      where
        examerequisicaoincerteza.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoincerteza.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from setoresnaoconformidadeusuario
      where
        setoresnaoconformidadeusuario.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela setoresnaoconformidadeusuario.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from setoresnaoconformidade
      where
        setoresnaoconformidade.usr_codresponsavelsetor = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela setoresnaoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codtransportechegada = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codtransportesaida = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lotefilial
      where
        lotefilial.usr_codrecebeu = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilial.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lotefilial
      where
        lotefilial.usr_codenviou = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilial.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from logoffline
      where
        logoffline.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logoffline.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariologin
      where
        usuariologin.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariologin.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from acoesnaoconformidade
      where
        acoesnaoconformidade.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela acoesnaoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from orcamentolog
      where
        orcamentolog.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamentolog.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from orcamento
      where
        orcamento.usr_codaprovado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.usr_codconclusao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela naoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.usr_codanalise = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela naoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.usr_codregistro = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela naoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela naoconformidade.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from labexterno
      where
        labexterno.usr_codconferir = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela labexterno.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from banhomariatemperatura
      where
        banhomariatemperatura.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela banhomariatemperatura.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from banhomaria
      where
        banhomaria.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela banhomaria.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from filiais_postocoleta
      where
        filiais_postocoleta.usr_codcompras = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiais_postocoleta.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from filiais_postocoleta
      where
        filiais_postocoleta.usr_codestoque = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiais_postocoleta.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaolaminas
      where
        examerequisicaolaminas.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaolaminas.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codhorarioanexado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codbloqueado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.usr_codremovido = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallote.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materiallote.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaohash
      where
        examerequisicaohash.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohash.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codfinalizado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codemcoleta = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codremarcado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaolog
      where
        requisicaolog.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolog.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from convenioshistoricocota
      where
        convenioshistoricocota.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaotrocas
      where
        examerequisicaotrocas.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaotrocas.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codtrocalayout = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codalteracaopreco = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariocompromisso
      where
        usuariocompromisso.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariocompromisso.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.usr_codsituacao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricolaudo.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from contrassenharequisicao
      where
        contrassenharequisicao.usr_codgerada = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from contrassenharequisicao
      where
        contrassenharequisicao.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from solicitarsoroteca
      where
        solicitarsoroteca.usr_codentrega = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela solicitarsoroteca.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from solicitarsoroteca
      where
        solicitarsoroteca.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela solicitarsoroteca.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from solicitarsoroteca
      where
        solicitarsoroteca.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela solicitarsoroteca.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from convenioignorarecebimento
      where
        convenioignorarecebimento.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricolaudo.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaosetor
      where
        examerequisicaosetor.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosetor.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from paciente
      where
        paciente.usr_codimpressaocarteira = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materialenviado
      where
        materialenviado.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materialidentificado
      where
        materialidentificado.usr_codretorno = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialidentificado.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from materialidentificado
      where
        materialidentificado.usr_codenvio = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialidentificado.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteapoio
      where
        loteapoio.usr_codrecebeucaixa = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaosoroteca
      where
        examerequisicaosoroteca.usr_coddescarte = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosoroteca.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaosoroteca
      where
        examerequisicaosoroteca.usr_codsoroteca = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosoroteca.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_codguiarepasse = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codrecoleta = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codfaturarepasse = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codcomissao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from montagemkit
      where
        montagemkit.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela montagemkit.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from transfestoque
      where
        transfestoque.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela transfestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from orcamento
      where
        orcamento.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamento.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from estoquemanual
      where
        estoquemanual.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela estoquemanual.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaoestoque
      where
        requisicaoestoque.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaoestoque
      where
        requisicaoestoque.usr_codalmoxarife = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaoestoque
      where
        requisicaoestoque.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.usr_codautorizafinanceira = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from conferenciaestoque
      where
        conferenciaestoque.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conferenciaestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lanctoestoque
      where
        lanctoestoque.usr_codconciliacao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lanctoestoque
      where
        lanctoestoque.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lanctoestoque
      where
        lanctoestoque.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoque.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from conferenciaentrada
      where
        conferenciaentrada.usr_codcancelamento = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conferenciaentrada.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from conferenciaentrada
      where
        conferenciaentrada.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela conferenciaentrada.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from pedido
      where
        pedido.usr_codexclusao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pedido.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from fatura
      where
        fatura.usr_codcomissao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from pedido
      where
        pedido.usr_codautorizacao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pedido.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from pedido
      where
        pedido.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pedido.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from cotacao
      where
        cotacao.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela cotacao.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from material
      where
        material.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela material.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codprotestocobranca = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codcartoriocobranca = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codavisocobranca = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codrepeticao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from paciente
      where
        paciente.usr_codalteracao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codguia = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaosituacoes
      where
        examerequisicaosituacoes.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosituacoes.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from exames
      where
        exames.usr_codassinaweb = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exames.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codexcluido = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_codexcluida = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from fatura
      where
        fatura.usr_codcancelamento = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from convenios
      where
        convenios.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenios.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.usr_codreimpressao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from geladeirastemperaturas
      where
        geladeirastemperaturas.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela geladeirastemperaturas.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from geladeiras
      where
        geladeiras.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela geladeiras.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariofilial
      where
        usuariofilial.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariofilial.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.usr_codimpressao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.usr_codcancelada = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from baixa
      where
        baixa.usr_codcancelado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela baixa.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from baixa
      where
        baixa.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela baixa.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codcancelado = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lanctocaixa
      where
        lanctocaixa.usr_codcancelado = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctocaixa.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaocid10
      where
        requisicaocid10.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaocid10.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codmaterialsetor = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codloteexterno = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteexterno
      where
        loteexterno.usr_codenvio = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexterno.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteexterno
      where
        loteexterno.usr_codcriacao = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexterno.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from log
      where
        log.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela log.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariomensagem
      where
        usuariomensagem.usr_codorigem = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariomensagem.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuariomensagem
      where
        usuariomensagem.usr_coddestino = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuariomensagem.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from conveniomensagem
      where
        conveniomensagem.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicaorecipiente
      where
        examerequisicaorecipiente.usr_codtriagem = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaorecipiente.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codetqtriagem = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codetqcoleta = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from loteapoio
      where
        loteapoio.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codtriagem = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from fatura
      where
        fatura.usr_codconferencia = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from fatura
      where
        fatura.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from contrasenha
      where
        contrasenha.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela contrasenha.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codnaofaturar = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicaousuario
      where
        requisicaousuario.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaousuario.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_codabertura = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codcortesia = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codmapa = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from interfaceexamerequisicao
      where
        interfaceexamerequisicao.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexamerequisicao.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuarioparametro
      where
        usuarioparametro.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuarioparametro.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from lanctocaixa
      where
        lanctocaixa.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctocaixa.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.usr_codigo = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codimpressao = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codentrega = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codfatura = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codmaterial = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_coddigitador = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.usr_codassina = old.usr_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.usr_codigo <> new.usr_codigo) then
    select count(*)
      from usuarioacesso
      where
        usuarioacesso.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela usuarioacesso.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from setores
      where
        setores.usr_codigo = old.usr_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela setores.'';
    end if;
  end if;
  if
    (old.usr_codigo <> new.usr_codigo) then
    select count(*)
      from paciente
      where
        paciente.usr_codigo = old.usr_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;
  select count(*) into numrows
    from tipousuario
    where
      new.tpu_codigo = tipousuario.tpu_codigo;
    tmp:=''tipousuario|'';
    
      tmp:=tmp || ''tpu_codigo='' || new.tpu_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.tpu_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela tipousuario. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_usuario
after update on usuario
for each row execute procedure fn_tu_usuario();



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

alter table requisicaolog add rlo_nrsuplemento smallint;

alter table requisicao add req_nrsuplemento smallint;

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

--campos adicionados na SQL final 01
--alter table logids rename column data to ids_datahora;
--alter table logids add ids_exportado boolean;

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


create table logexportaintegracaohospital (
       lei_codigo           serial not null,
       fil_codigo           integer,
       eih_codigo           bigint,
       lei_datahora         timestamp,
       lei_situacao         varchar(1),
       lei_retorno          varchar(1000)
);

create unique index xpklogexportaintegracaohospital on logexportaintegracaohospital
(
       lei_codigo
);

create index xif1logexportaintegracaohospita on logexportaintegracaohospital
(
       fil_codigo,
       eih_codigo
);


alter table logexportaintegracaohospital
       add primary key (lei_codigo);




--drop function fn_td_exportaintegracaohospital() cascade;

create function fn_td_exportaintegracaohospital() returns opaque as '
declare
	numrows integer;										 
begin
    delete from logexportaintegracaohospital
      where
        logexportaintegracaohospital.fil_codigo = old.fil_codigo and
        logexportaintegracaohospital.eih_codigo = old.eih_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_exportaintegracaohospital
after delete on exportaintegracaohospital
for each row execute procedure fn_td_exportaintegracaohospital();


drop function fn_ti_exportaintegracaohospital() cascade;

create function fn_ti_exportaintegracaohospital() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_exportaintegracaohospital
after insert on exportaintegracaohospital
for each row execute procedure fn_ti_exportaintegracaohospital();


drop function fn_tu_exportaintegracaohospital() cascade;

create function fn_tu_exportaintegracaohospital() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.eih_codigo <> new.eih_codigo) then
    select count(*)
      from logexportaintegracaohospital
      where
        logexportaintegracaohospital.fil_codigo = old.fil_codigo and
        logexportaintegracaohospital.eih_codigo = old.eih_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logexportaintegracaohospital.'';
    end if;
  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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_exportaintegracaohospital
after update on exportaintegracaohospital
for each row execute procedure fn_tu_exportaintegracaohospital();


--drop function fn_ti_logexportaintegracaohospital() cascade;

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

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


return new;
end;'
language 'plpgsql';
					
create trigger ti_logexportaintegracaohospital
after insert on logexportaintegracaohospital
for each row execute procedure fn_ti_logexportaintegracaohospital();


--drop function fn_tu_logexportaintegracaohospital() cascade;

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


return old;
end;'
language 'plpgsql';
					
create trigger tu_logexportaintegracaohospital
after update on logexportaintegracaohospital
for each row execute procedure fn_tu_logexportaintegracaohospital();




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

alter table exportaintegracaohospital
     add  req_codigo           integer,
     add  exa_codigo           varchar(5),
     add  mco_codigo           integer;


create index xif2exportaintegracaohospital on exportaintegracaohospital
(
       fil_codigo,
       req_codigo
);

create index xif3exportaintegracaohospital on exportaintegracaohospital
(
       fil_codigo,
       exa_codigo,
       mco_codigo,
       req_codigo
);


drop function fn_td_examerequisicao() cascade;


create function fn_td_examerequisicao() returns opaque as '
declare 
  numrows integer;
begin

delete from exportaintegracaohospital
      where
        exportaintegracaohospital.fil_codigo = old.fil_codigo and
        exportaintegracaohospital.exa_codigo = old.exa_codigo and
        exportaintegracaohospital.mco_codigo = old.mco_codigo and
        exportaintegracaohospital.req_codigo = old.req_codigo;

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

delete from examerequisicaohistoricosetor
      where
        examerequisicaohistoricosetor.fil_codigo = old.fil_codigo and
        examerequisicaohistoricosetor.exa_codigo = old.exa_codigo and
        examerequisicaohistoricosetor.mco_codigo = old.mco_codigo and
        examerequisicaohistoricosetor.req_codigo = old.req_codigo;

delete from examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.fil_codigo = old.fil_codigo and
        examerequisicaoetiquetas.exa_codigo = old.exa_codigo and
        examerequisicaoetiquetas.mco_codigo = old.mco_codigo and
        examerequisicaoetiquetas.req_codigo = old.req_codigo;

delete from examerequisicaoemailatraso
      where
        examerequisicaoemailatraso.fil_codigo = old.fil_codigo and
        examerequisicaoemailatraso.exa_codigo = old.exa_codigo and
        examerequisicaoemailatraso.mco_codigo = old.mco_codigo and
        examerequisicaoemailatraso.req_codigo = old.req_codigo;

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

delete from examerequisicaoincerteza
      where
        examerequisicaoincerteza.fil_codigo = old.fil_codigo and
        examerequisicaoincerteza.exa_codigo = old.exa_codigo and
        examerequisicaoincerteza.mco_codigo = old.mco_codigo and
        examerequisicaoincerteza.req_codigo = old.req_codigo;

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

delete from examerequisicaoresultado
      where
        examerequisicaoresultado.fil_codigo = old.fil_codigo and
        examerequisicaoresultado.exa_codigo = old.exa_codigo and
        examerequisicaoresultado.mco_codigo = old.mco_codigo and
        examerequisicaoresultado.req_codigo = old.req_codigo;

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

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

delete from examerequisicaotrocas
      where
        examerequisicaotrocas.fil_codigo = old.fil_codigo and
        examerequisicaotrocas.exa_codigo = old.exa_codigo and
        examerequisicaotrocas.mco_codigo = old.mco_codigo and
        examerequisicaotrocas.req_codigo = old.req_codigo;

delete from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.fil_codigo = old.fil_codigo and
        examerequisicaohistoricolaudo.exa_codigo = old.exa_codigo and
        examerequisicaohistoricolaudo.mco_codigo = old.mco_codigo and
        examerequisicaohistoricolaudo.req_codigo = old.req_codigo;

delete from examerequisicaosetor
      where
        examerequisicaosetor.fil_codigo = old.fil_codigo and
        examerequisicaosetor.exa_codigo = old.exa_codigo and
        examerequisicaosetor.mco_codigo = old.mco_codigo and
        examerequisicaosetor.req_codigo = old.req_codigo;

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

delete from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.exa_codigo = old.exa_codigo and
        examerequisicaosituacoes.mco_codigo = old.mco_codigo and
        examerequisicaosituacoes.req_codigo = old.req_codigo;

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

delete from examerequisicaorecipiente
      where
        examerequisicaorecipiente.fil_codigo = old.fil_codigo and
        examerequisicaorecipiente.exa_codigo = old.exa_codigo and
        examerequisicaorecipiente.mco_codigo = old.mco_codigo and
        examerequisicaorecipiente.req_codigo = old.req_codigo;

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

delete from interfaceexamerequisicao
      where
        interfaceexamerequisicao.fil_codigo = old.fil_codigo and
        interfaceexamerequisicao.exa_codigo = old.exa_codigo and
        interfaceexamerequisicao.mco_codigo = old.mco_codigo and
        interfaceexamerequisicao.req_codigo = old.req_codigo;

delete from materialexamerequis
      where
        materialexamerequis.fil_codigo = old.fil_codigo and
        materialexamerequis.exa_codigo = old.exa_codigo and
        materialexamerequis.mco_codigo = old.mco_codigo and
        materialexamerequis.req_codigo = old.req_codigo;



delete from examerequisicaoresultado
 where fil_codigo = old.fil_codigo
   and req_codigo = old.req_codigo
   and exa_codigo = old.exa_codigo
   and mco_codigo = old.mco_codigo;


return old;

end'
language 'plpgsql';



create trigger td_examerequisicao 
  after delete on examerequisicao
for each row execute procedure fn_td_examerequisicao();

drop function fn_ti_examerequisicao() cascade;

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

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

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

    if (
      new.usr_codduplaconferencia 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 usuario
      where
        new.usr_codsolicitadotiss = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codsolicitadotiss || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codsolicitadotiss 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 examematcoleta
      where
        new.fil_codigo = examematcoleta.fil_codigo and
        new.exa_codigopai = examematcoleta.exa_codigo and
        new.mco_codigopai = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigopai || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigopai || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.exa_codigopai is not null and
      new.mco_codigopai is not null and
      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 usuario
      where
        new.usr_codcoletar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcoletar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codcoletar 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 usuario
      where
        new.usr_codtransportechegada = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportechegada || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtransportechegada 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 usuario
      where
        new.usr_codtransportesaida = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportesaida || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtransportesaida 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 usuario
      where
        new.usr_codtrocalayout = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtrocalayout || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtrocalayout 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 usuario
      where
        new.usr_codalteracaopreco = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codalteracaopreco || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codalteracaopreco 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 usuario
      where
        new.usr_codrecoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrecoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codrecoleta 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 usuario
      where
        new.usr_codfaturarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfaturarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codfaturarepasse 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 usuario
      where
        new.usr_codrepeticao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrepeticao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codrepeticao 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 usuario
      where
        new.usr_codguia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codguia 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 usuario
      where
        new.usr_codexcluido = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codexcluido || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codexcluido 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 usuario
      where
        new.usr_codmaterialsetor = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterialsetor || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmaterialsetor 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 usuario
      where
        new.usr_codloteexterno = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codloteexterno || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codloteexterno 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 usuario
      where
        new.usr_codetqtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codetqtriagem 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 usuario
      where
        new.usr_codetqcoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqcoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codetqcoleta 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 usuario
      where
        new.usr_codtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codtriagem 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 usuario
      where
        new.usr_codnaofaturar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codnaofaturar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codnaofaturar 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 usuario
      where
        new.usr_codcortesia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcortesia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codcortesia 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 usuario
      where
        new.usr_codmapa = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmapa || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmapa 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 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 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 usuario
      where
        new.usr_codimpressao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codimpressao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codimpressao 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 usuario
      where
        new.usr_codentrega = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codentrega || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codentrega 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 usuario
      where
        new.usr_codfatura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfatura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codfatura 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 usuario
      where
        new.usr_codmaterial = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterial || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codmaterial 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 usuario
      where
        new.usr_coddigitador = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddigitador || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_coddigitador 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 usuario
      where
        new.usr_codassina = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codassina || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codassina 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 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 (
      new.fil_codigo is not null and
      new.mco_codigo is not null and
      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 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 requisicao
      where
        new.fil_codigo = requisicao.fil_codigo and
        new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 requisicao. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;





insert into examerequisicaoresultado(fil_codigo, req_codigo, exa_codigo, mco_codigo, ert_resultado) values (new.fil_codigo, new.req_codigo, new.exa_codigo, new.mco_codigo, new.exr_resultado);

/* troca o valor do campo de resultado na tabela exame requisicao */
new.exr_resultado = ''.'';

return new;

end'
language 'plpgsql';



create trigger ti_examerequisicao 
  after insert on examerequisicao
for each row execute procedure fn_ti_examerequisicao();




drop function fn_tu_b_examerequisicao() cascade;
create function fn_tu_b_examerequisicao() returns opaque as '
declare
  req bigint;
begin

select req_codigo into req from examerequisicaoresultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
if (not found) then
  insert into examerequisicaoresultado(fil_codigo, req_codigo, exa_codigo, mco_codigo) values (new.fil_codigo, new.req_codigo, new.exa_codigo, new.mco_codigo);
end if;


if ((upper(new.exr_situacao) = upper(''l'') or upper(new.exr_situacao) = upper(''c'') or upper(new.exr_situacao) = upper(''i'') or upper(new.exr_situacao) = upper(''e'') or upper(new.exr_situacao) = upper(''p'')) and 
  new.exr_resultado is not null and length(new.exr_resultado) > 0) then
  update examerequisicaoresultado set ert_resultado = new.exr_resultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
end if;

if ((new.exr_situacao is null or new.exr_situacao = '''' or upper(new.exr_situacao) = upper(''f'') or upper(new.exr_situacao) = upper(''t'') or upper(new.exr_situacao) = upper(''r''))) then
  update examerequisicaoresultado set ert_resultado = new.exr_resultado where fil_codigo = new.fil_codigo and req_codigo = new.req_codigo and exa_codigo = new.exa_codigo and mco_codigo = new.mco_codigo;
end if;


/* troca o valor do campo de resultado na tabela exame requisicao */
new.exr_resultado := null;

return new;

end'
language 'plpgsql';



create trigger tu_b_examerequisicao 
  before update on examerequisicao
for each row execute procedure fn_tu_b_examerequisicao();










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

select count(*) into numrows
    from usuario
    where
      new.usr_codduplaconferencia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codduplaconferencia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codduplaconferencia 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 usuario
    where
      new.usr_codsolicitadotiss = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codsolicitadotiss || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codsolicitadotiss 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 examematcoleta
    where
      new.fil_codigo = examematcoleta.fil_codigo and
      new.exa_codigopai = examematcoleta.exa_codigo and
      new.mco_codigopai = examematcoleta.mco_codigo;
    tmp:=''examematcoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigopai || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigopai || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.exa_codigopai is not null and
    new.mco_codigopai is not null and
    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 usuario
    where
      new.usr_codcoletar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcoletar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codcoletar 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 usuario
    where
      new.usr_codtransportechegada = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportechegada || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtransportechegada 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 usuario
    where
      new.usr_codtransportesaida = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtransportesaida || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtransportesaida 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 usuario
    where
      new.usr_codtrocalayout = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtrocalayout || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtrocalayout 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 usuario
    where
      new.usr_codalteracaopreco = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codalteracaopreco || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codalteracaopreco 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 usuario
    where
      new.usr_codrecoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrecoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codrecoleta 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 usuario
    where
      new.usr_codfaturarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfaturarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codfaturarepasse 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 usuario
    where
      new.usr_codrepeticao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codrepeticao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codrepeticao 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 usuario
    where
      new.usr_codguia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codguia 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 usuario
    where
      new.usr_codexcluido = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codexcluido || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codexcluido 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 usuario
    where
      new.usr_codmaterialsetor = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterialsetor || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmaterialsetor 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 usuario
    where
      new.usr_codloteexterno = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codloteexterno || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codloteexterno 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 usuario
    where
      new.usr_codetqtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codetqtriagem 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 usuario
    where
      new.usr_codetqcoleta = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codetqcoleta || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codetqcoleta 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 usuario
    where
      new.usr_codtriagem = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codtriagem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codtriagem 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 usuario
    where
      new.usr_codnaofaturar = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codnaofaturar || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codnaofaturar 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 usuario
    where
      new.usr_codcortesia = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcortesia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codcortesia 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 usuario
    where
      new.usr_codmapa = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmapa || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmapa 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 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 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 usuario
    where
      new.usr_codimpressao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codimpressao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codimpressao 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 usuario
    where
      new.usr_codentrega = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codentrega || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codentrega 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 usuario
    where
      new.usr_codfatura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codfatura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codfatura 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 usuario
    where
      new.usr_codmaterial = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codmaterial || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codmaterial 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 usuario
    where
      new.usr_coddigitador = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddigitador || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_coddigitador 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 usuario
    where
      new.usr_codassina = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codassina || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codassina 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 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 (
    new.fil_codigo is not null and
    new.mco_codigo is not null and
    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 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 requisicao
    where
      new.fil_codigo = requisicao.fil_codigo and
      new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_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 requisicao. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


if
    (old.fil_codigo <> new.fil_codigo or 
     old.exa_codigo <> new.exa_codigo or 
     old.mco_codigo <> new.mco_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from exportaintegracaohospital
      where
        exportaintegracaohospital.fil_codigo = old.fil_codigo and
        exportaintegracaohospital.exa_codigo = old.exa_codigo and
        exportaintegracaohospital.mco_codigo = old.mco_codigo and
        exportaintegracaohospital.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaintegracaohospital.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logids
      where
        logids.fil_codigo = old.fil_codigo and
        logids.exa_codigo = old.exa_codigo and
        logids.mco_codigo = old.mco_codigo and
        logids.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logids.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohistoricosetor
      where
        examerequisicaohistoricosetor.fil_codigo = old.fil_codigo and
        examerequisicaohistoricosetor.exa_codigo = old.exa_codigo and
        examerequisicaohistoricosetor.mco_codigo = old.mco_codigo and
        examerequisicaohistoricosetor.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricosetor.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoetiquetas
      where
        examerequisicaoetiquetas.fil_codigo = old.fil_codigo and
        examerequisicaoetiquetas.exa_codigo = old.exa_codigo and
        examerequisicaoetiquetas.mco_codigo = old.mco_codigo and
        examerequisicaoetiquetas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoetiquetas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoemailatraso
      where
        examerequisicaoemailatraso.fil_codigo = old.fil_codigo and
        examerequisicaoemailatraso.exa_codigo = old.exa_codigo and
        examerequisicaoemailatraso.mco_codigo = old.mco_codigo and
        examerequisicaoemailatraso.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoemailatraso.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaodadosbrutos
      where
        examerequisicaodadosbrutos.fil_codigo = old.fil_codigo and
        examerequisicaodadosbrutos.exa_codigo = old.exa_codigo and
        examerequisicaodadosbrutos.mco_codigo = old.mco_codigo and
        examerequisicaodadosbrutos.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaodadosbrutos.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoincerteza
      where
        examerequisicaoincerteza.fil_codigo = old.fil_codigo and
        examerequisicaoincerteza.exa_codigo = old.exa_codigo and
        examerequisicaoincerteza.mco_codigo = old.mco_codigo and
        examerequisicaoincerteza.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoincerteza.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from lotefilialexamerequisicao
      where
        lotefilialexamerequisicao.fil_codigo = old.fil_codigo and
        lotefilialexamerequisicao.exa_codigo = old.exa_codigo and
        lotefilialexamerequisicao.mco_codigo = old.mco_codigo and
        lotefilialexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilialexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoresultado
      where
        examerequisicaoresultado.fil_codigo = old.fil_codigo and
        examerequisicaoresultado.exa_codigo = old.exa_codigo and
        examerequisicaoresultado.mco_codigo = old.mco_codigo and
        examerequisicaoresultado.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaoresultado.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaolaminas
      where
        examerequisicaolaminas.fil_codigo = old.fil_codigo and
        examerequisicaolaminas.exa_codigo = old.exa_codigo and
        examerequisicaolaminas.mco_codigo = old.mco_codigo and
        examerequisicaolaminas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaolaminas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohash
      where
        examerequisicaohash.fil_codigo = old.fil_codigo and
        examerequisicaohash.exa_codigo = old.exa_codigo and
        examerequisicaohash.mco_codigo = old.mco_codigo and
        examerequisicaohash.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohash.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaotrocas
      where
        examerequisicaotrocas.fil_codigo = old.fil_codigo and
        examerequisicaotrocas.exa_codigo = old.exa_codigo and
        examerequisicaotrocas.mco_codigo = old.mco_codigo and
        examerequisicaotrocas.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaotrocas.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.fil_codigo = old.fil_codigo and
        examerequisicaohistoricolaudo.exa_codigo = old.exa_codigo and
        examerequisicaohistoricolaudo.mco_codigo = old.mco_codigo and
        examerequisicaohistoricolaudo.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaohistoricolaudo.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaosetor
      where
        examerequisicaosetor.fil_codigo = old.fil_codigo and
        examerequisicaosetor.exa_codigo = old.exa_codigo and
        examerequisicaosetor.mco_codigo = old.mco_codigo and
        examerequisicaosetor.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosetor.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaoguiaagrupada
      where
        examerequisicaoguiaagrupada.fil_codigo = old.fil_codigo and
        examerequisicaoguiaagrupada.exa_codigo = old.exa_codigo and
        examerequisicaoguiaagrupada.mco_codigo = old.mco_codigo and
        examerequisicaoguiaagrupada.req_codigo = old.req_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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaosituacoes
      where
        examerequisicaosituacoes.fil_codigo = old.fil_codigo and
        examerequisicaosituacoes.exa_codigo = old.exa_codigo and
        examerequisicaosituacoes.mco_codigo = old.mco_codigo and
        examerequisicaosituacoes.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaosituacoes.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteexternoexamerequisicao
      where
        loteexternoexamerequisicao.fil_kodigo = old.fil_codigo and
        loteexternoexamerequisicao.exa_codigo = old.exa_codigo and
        loteexternoexamerequisicao.mco_codigo = old.mco_codigo and
        loteexternoexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternoexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicaorecipiente
      where
        examerequisicaorecipiente.fil_codigo = old.fil_codigo and
        examerequisicaorecipiente.exa_codigo = old.exa_codigo and
        examerequisicaorecipiente.mco_codigo = old.mco_codigo and
        examerequisicaorecipiente.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examerequisicaorecipiente.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from faturaexamerequisicao
      where
        faturaexamerequisicao.fil_kodigo = old.fil_codigo and
        faturaexamerequisicao.exa_codigo = old.exa_codigo and
        faturaexamerequisicao.mco_codigo = old.mco_codigo and
        faturaexamerequisicao.req_codigo = old.req_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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from interfaceexamerequisicao
      where
        interfaceexamerequisicao.fil_codigo = old.fil_codigo and
        interfaceexamerequisicao.exa_codigo = old.exa_codigo and
        interfaceexamerequisicao.mco_codigo = old.mco_codigo and
        interfaceexamerequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interfaceexamerequisicao.'';
    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 or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from materialexamerequis
      where
        materialexamerequis.fil_codigo = old.fil_codigo and
        materialexamerequis.exa_codigo = old.exa_codigo and
        materialexamerequis.mco_codigo = old.mco_codigo and
        materialexamerequis.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialexamerequis.'';
    end if;
  end if;


return new;

end'
language 'plpgsql';



create trigger tu_examerequisicao 
  after update on examerequisicao
for each row execute procedure fn_tu_examerequisicao();




drop function fn_td_exportaintegracaohospital() cascade;

create function fn_td_exportaintegracaohospital() returns opaque as '
declare
	numrows integer;										 
begin
    delete from logexportaintegracaohospital
      where
        logexportaintegracaohospital.fil_codigo = old.fil_codigo and
        logexportaintegracaohospital.eih_codigo = old.eih_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_exportaintegracaohospital
after delete on exportaintegracaohospital
for each row execute procedure fn_td_exportaintegracaohospital();


drop function fn_ti_exportaintegracaohospital() cascade;

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

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

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

    if (
      new.fil_codigo is not null and
      new.req_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela requisicao. 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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_exportaintegracaohospital
after insert on exportaintegracaohospital
for each row execute procedure fn_ti_exportaintegracaohospital();


drop function fn_tu_exportaintegracaohospital() cascade;

create function fn_tu_exportaintegracaohospital() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.eih_codigo <> new.eih_codigo) then
    select count(*)
      from logexportaintegracaohospital
      where
        logexportaintegracaohospital.fil_codigo = old.fil_codigo and
        logexportaintegracaohospital.eih_codigo = old.eih_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logexportaintegracaohospital.'';
    end if;
  end if;
  select count(*) into numrows
    from examerequisicao
    where
      new.fil_codigo = examerequisicao.fil_codigo and
      new.exa_codigo = examerequisicao.exa_codigo and
      new.mco_codigo = examerequisicao.mco_codigo and
      new.req_codigo = examerequisicao.req_codigo;
    tmp:=''examerequisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''exa_codigo='' || new.exa_codigo || ''|'';
    
      tmp:=tmp || ''mco_codigo='' || new.mco_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.exa_codigo is not null and
    new.mco_codigo is not null and
    new.req_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela examerequisicao. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from requisicao
    where
      new.fil_codigo = requisicao.fil_codigo and
      new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.req_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela requisicao. 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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_exportaintegracaohospital
after update on exportaintegracaohospital
for each row execute procedure fn_tu_exportaintegracaohospital();


drop function fn_td_requisicao() cascade;

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

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

    delete from requisicaovisualizada
      where
        requisicaovisualizada.fil_codigo = old.fil_codigo and
        requisicaovisualizada.req_codigo = old.req_codigo;

    delete from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.req_codigo = old.req_codigo;

    delete from requisicaoimagens
      where
        requisicaoimagens.fil_codigo = old.fil_codigo and
        requisicaoimagens.req_codigo = old.req_codigo;

    delete from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.req_codigo = old.req_codigo;

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

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

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

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

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

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

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

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

    delete from requisicaocid10
      where
        requisicaocid10.fil_codigo = old.fil_codigo and
        requisicaocid10.req_codigo = old.req_codigo;

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

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

    delete from requisicaousuario
      where
        requisicaousuario.fil_codigo = old.fil_codigo and
        requisicaousuario.req_codigo = old.req_codigo;

    delete from requisicaolanctocaixa
      where
        requisicaolanctocaixa.fil_codigo = old.fil_codigo and
        requisicaolanctocaixa.req_codigo = old.req_codigo;

    delete from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.req_codigo = old.req_codigo;

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

    delete from requisicaomedicamento
      where
        requisicaomedicamento.fil_codigo = old.fil_codigo and
        requisicaomedicamento.req_codigo = old.req_codigo;

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

    delete from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_kodigo = old.req_codigo;

    delete from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.req_codigo = old.req_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_requisicao
after delete on requisicao
for each row execute procedure fn_td_requisicao();


drop function fn_ti_requisicao() cascade;

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

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

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

    if (
      new.usr_coddesconto 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 usuario
      where
        new.usr_codelegibilidade = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codelegibilidade || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codelegibilidade 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 formapagto
      where
        new.fpg_codigo = formapagto.fpg_codigo and
        new.fil_codigo = formapagto.fil_codigo;
    tmp:=''formapagto|'';
    
      tmp:=tmp || ''fpg_codigo='' || new.fpg_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fpg_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 formapagto. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

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

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

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

    if (
      new.usr_codguiarepasse 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 convenios
      where
        new.fil_codigo = convenios.fil_codigo and
        new.con_codrepasse = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codrepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.con_codrepasse is not null and
      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;

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

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

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

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

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

    if (
      new.usr_codexcluida 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 entidade
      where
        new.fil_codigo = entidade.fil_codigo and
        new.ent_codigo = entidade.ent_codigo;
    tmp:=''entidade|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''ent_codigo='' || new.ent_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

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

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

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

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

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

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

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

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

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

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

    if (
      new.fil_codcopia is not null and
      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 usuario
      where
        new.usr_codabertura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codabertura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codabertura 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 estacoes
      where
        new.est_codigo = estacoes.est_codigo;
    tmp:=''estacoes|'';
    
      tmp:=tmp || ''est_codigo='' || new.est_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.est_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela estacoes. 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 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 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;

    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 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 (
      new.fil_codigo is not null and
      new.con_codigo is not null and
      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;

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

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

    select count(*) into numrows
      from paciente
      where
        new.fil_codigo = paciente.fil_codigo and
        new.pac_codigo = paciente.pac_codigo;
    tmp:=''paciente|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pac_codigo='' || new.pac_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 paciente. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_requisicao
after insert on requisicao
for each row execute procedure fn_ti_requisicao();


drop function fn_tu_requisicao() cascade;

create function fn_tu_requisicao() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from exportaintegracaohospital
      where
        exportaintegracaohospital.fil_codigo = old.fil_codigo and
        exportaintegracaohospital.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaintegracaohospital.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logemail
      where
        logemail.fil_codigo = old.fil_codigo and
        logemail.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logemail.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaovisualizada
      where
        requisicaovisualizada.fil_codigo = old.fil_codigo and
        requisicaovisualizada.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaovisualizada.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaoimagens
      where
        requisicaoimagens.fil_codigo = old.fil_codigo and
        requisicaoimagens.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoimagens.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logsms.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaotaxa
      where
        requisicaotaxa.fil_codigo = old.fil_codigo and
        requisicaotaxa.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaotaxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from lotefilialrequisicao
      where
        lotefilialrequisicao.fil_codigo = old.fil_codigo and
        lotefilialrequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilialrequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaonaoconformidade
      where
        requisicaonaoconformidade.fil_codigo = old.fil_codigo and
        requisicaonaoconformidade.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaonaoconformidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolog
      where
        requisicaolog.fil_codigo = old.fil_codigo and
        requisicaolog.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolog.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.fil_codigo = old.fil_codigo and
        agendamento.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaonotafiscal
      where
        requisicaonotafiscal.fil_codigo = old.fil_codigo and
        requisicaonotafiscal.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaonotafiscal.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolabexterno
      where
        requisicaolabexterno.fil_codigo = old.fil_codigo and
        requisicaolabexterno.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaocid10
      where
        requisicaocid10.fil_codigo = old.fil_codigo and
        requisicaocid10.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaocid10.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteexternorequisicao
      where
        loteexternorequisicao.fil_kodigo = old.fil_codigo and
        loteexternorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteapoiorequisicao
      where
        loteapoiorequisicao.fil_codigo = old.fil_codigo and
        loteapoiorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteapoiorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaousuario
      where
        requisicaousuario.fil_codigo = old.fil_codigo and
        requisicaousuario.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaousuario.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolanctocaixa
      where
        requisicaolanctocaixa.fil_codigo = old.fil_codigo and
        requisicaolanctocaixa.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolanctocaixa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaomedicamento
      where
        requisicaomedicamento.fil_codigo = old.fil_codigo and
        requisicaomedicamento.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaomedicamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from faturarequisicao
      where
        faturarequisicao.fil_kodigo = old.fil_codigo and
        faturarequisicao.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_kodigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.req_codigo = old.req_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;
  select count(*) into numrows
    from produtoalimentos
    where
      new.fil_codigo = produtoalimentos.fil_codigo and
      new.cpl_codigo = produtoalimentos.cpl_codigo and
      new.pal_codigo = produtoalimentos.pal_codigo;
    tmp:=''produtoalimentos|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cpl_codigo='' || new.cpl_codigo || ''|'';
    
      tmp:=tmp || ''pal_codigo='' || new.pal_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cpl_codigo is not null and
    new.pal_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela produtoalimentos. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from usuario
    where
      new.usr_coddesconto = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddesconto || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_coddesconto 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 usuario
    where
      new.usr_codelegibilidade = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codelegibilidade || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codelegibilidade 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 formapagto
    where
      new.fpg_codigo = formapagto.fpg_codigo and
      new.fil_codigo = formapagto.fil_codigo;
    tmp:=''formapagto|'';
    
      tmp:=tmp || ''fpg_codigo='' || new.fpg_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fpg_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 formapagto. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

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

  select count(*) into numrows
    from usuario
    where
      new.usr_codguiarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguiarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codguiarepasse 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 convenios
    where
      new.fil_codigo = convenios.fil_codigo and
      new.con_codrepasse = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codrepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.con_codrepasse is not null and
    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;

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

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

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

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

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

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

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

  select count(*) into numrows
    from filiais_postocoleta
    where
      new.fil_codcopia = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codcopia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codcopia is not null and
    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 usuario
    where
      new.usr_codabertura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codabertura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codabertura 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 estacoes
    where
      new.est_codigo = estacoes.est_codigo;
    tmp:=''estacoes|'';
    
      tmp:=tmp || ''est_codigo='' || new.est_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.est_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela estacoes. 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 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 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;

  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 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 (
    new.fil_codigo is not null and
    new.con_codigo is not null and
    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;

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

  select count(*) into numrows
    from paciente
    where
      new.fil_codigo = paciente.fil_codigo and
      new.pac_codigo = paciente.pac_codigo;
    tmp:=''paciente|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pac_codigo='' || new.pac_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 paciente. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_requisicao
after update on requisicao
for each row execute procedure fn_tu_requisicao();







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

alter table notafiscalservico add nfs_ordem integer;

create or replace function atualizanota() returns integer
as $$
declare 
  contador integer;
  r record;
  anterior integer;
begin
  anterior = -1;
  for r in select fil_codigo, nfi_codigo, nfs_ordem, svc_codigo from notafiscalservico order by 1,2
  loop
    if anterior <> r.nfi_codigo then
      contador = 1;
      anterior = r.nfi_codigo;
    end if;
    execute 'update notafiscalservico set nfs_ordem = ' || contador || ' where fil_codigo =  ' || r.fil_codigo || ' and nfi_codigo = ' || r.nfi_codigo || ' and svc_codigo = ' || r.svc_codigo;
    contador = contador + 1;
  end loop;
  return 1;
end;
$$ language plpgsql;

select atualizanota();


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


alter table logemail 
    add   req_codigo           integer,
    add   pac_codigo           integer,
    add   ema_origem           varchar(1);

create index xif2logemail on logemail
(
       fil_codigo,
       req_codigo
);

create index xif3logemail on logemail
(
       fil_codigo,
       pac_codigo
);


drop function fn_ti_logemail() cascade;

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

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

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

    if (
      new.fil_codigo is not null and
      new.req_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela requisicao. 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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_logemail
after insert on logemail
for each row execute procedure fn_ti_logemail();


drop function fn_tu_logemail() cascade;

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

  select count(*) into numrows
    from requisicao
    where
      new.fil_codigo = requisicao.fil_codigo and
      new.req_codigo = requisicao.req_codigo;
    tmp:=''requisicao|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''req_codigo='' || new.req_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.req_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela requisicao. 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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_logemail
after update on logemail
for each row execute procedure fn_tu_logemail();


drop function fn_td_paciente() cascade;

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

    delete from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.pac_codigo = old.pac_codigo;

    delete from pacienteimagens
      where
        pacienteimagens.fil_codigo = old.fil_codigo and
        pacienteimagens.pac_codigo = old.pac_codigo;

    delete from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.pac_codigo = old.pac_codigo;

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

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

    select count(*) into numrows
      from materialenviado
      where
        materialenviado.fil_codigo = old.fil_codigo and
        materialenviado.pac_codigo = old.pac_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 orcamento
      where
        orcamento.fil_codigo = old.fil_codigo and
        orcamento.pac_codigo = old.pac_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela orcamento.'';
    end if;

    select count(*) into numrows
      from loteapoio
      where
        loteapoio.fil_codigo = old.fil_codigo and
        loteapoio.pac_codigo = old.pac_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.pac_codigo = old.pac_codigo;

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

    delete from pacienteentidade
      where
        pacienteentidade.fil_codigo = old.fil_codigo and
        pacienteentidade.pac_codigo = old.pac_codigo;

    select count(*) into numrows
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_codigo and
        notafiscal.pac_codigo = old.pac_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.pac_codigo = old.pac_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela receberpagar.'';
    end if;

    delete from pacientescontatos
      where
        pacientescontatos.fil_codigo = old.fil_codigo and
        pacientescontatos.pac_codigo = old.pac_codigo;

    delete from pacientemedicamento
      where
        pacientemedicamento.fil_codigo = old.fil_codigo and
        pacientemedicamento.pac_codigo = old.pac_codigo;

    delete from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.pac_codigo = old.pac_codigo;

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


return old;
end;'
language 'plpgsql';
					
create trigger td_paciente
after delete on paciente
for each row execute procedure fn_td_paciente();


drop function fn_ti_paciente() cascade;

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

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

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

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

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

    if (
      new.usr_codimpressaocarteira 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 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_codalteracao = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codalteracao || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codalteracao 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_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 unidadesaude
      where
        new.fil_codigo = unidadesaude.fil_codigo and
        new.uns_codigo = unidadesaude.uns_codigo;
    tmp:=''unidadesaude|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''uns_codigo='' || new.uns_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

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

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

    if (
      new.fil_codigo is not null and
      new.epc_codigo is not null and
      new.rac_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela raca. 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_codigocobranca = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codigocobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.cid_codigocobranca 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 bairro
      where
        new.fil_codigo = bairro.fil_codigo and
        new.bai_codigocobranca = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codigocobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.bai_codigocobranca 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_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 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 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 (
      new.fil_codigo is not null and
      new.con_codigo is not null and
      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;

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

    if (
      new.fil_codigo is not null and
      new.med_conselho is not null and
      new.med_crm is not null and
      new.med_uf is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela medico. 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 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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_paciente
after insert on paciente
for each row execute procedure fn_ti_paciente();


drop function fn_tu_paciente() cascade;

create function fn_tu_paciente() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from logemail
      where
        logemail.fil_codigo = old.fil_codigo and
        logemail.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logemail.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from pacienteimagens
      where
        pacienteimagens.fil_codigo = old.fil_codigo and
        pacienteimagens.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteimagens.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logsms.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from contrassenharequisicao
      where
        contrassenharequisicao.fil_codigo = old.fil_codigo and
        contrassenharequisicao.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from materialenviado
      where
        materialenviado.fil_codigo = old.fil_codigo and
        materialenviado.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from orcamento
      where
        orcamento.fil_codigo = old.fil_codigo and
        orcamento.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela orcamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from loteapoio
      where
        loteapoio.fil_codigo = old.fil_codigo and
        loteapoio.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from exportaapoio
      where
        exportaapoio.fil_codigo = old.fil_codigo and
        exportaapoio.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from pacientelabexterno
      where
        pacientelabexterno.fil_codigo = old.fil_codigo and
        pacientelabexterno.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacientelabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from pacienteentidade
      where
        pacienteentidade.fil_codigo = old.fil_codigo and
        pacienteentidade.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteentidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_codigo and
        notafiscal.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.fil_codigo = old.fil_codigo and
        receberpagar.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from pacientescontatos
      where
        pacientescontatos.fil_codigo = old.fil_codigo and
        pacientescontatos.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacientescontatos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from pacientemedicamento
      where
        pacientemedicamento.fil_codigo = old.fil_codigo and
        pacientemedicamento.pac_codigo = old.pac_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacientemedicamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.pac_codigo <> new.pac_codigo) then
    select count(*)
      from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.pac_codigo = old.pac_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.pac_codigo <> new.pac_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.pac_codigo = old.pac_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;
  select count(*) into numrows
    from entidade
    where
      new.fil_codigo = entidade.fil_codigo and
      new.ent_codempresa = entidade.ent_codigo;
    tmp:=''entidade|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''ent_codigo='' || new.ent_codempresa || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.ent_codempresa is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela entidade. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

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

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

  select count(*) into numrows
    from raca
    where
      new.fil_codigo = raca.fil_codigo and
      new.epc_codigo = raca.epc_codigo and
      new.rac_codigo = raca.rac_codigo;
    tmp:=''raca|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''epc_codigo='' || new.epc_codigo || ''|'';
    
      tmp:=tmp || ''rac_codigo='' || new.rac_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.epc_codigo is not null and
    new.rac_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela raca. 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_codigocobranca = cidades.cid_codigo;
    tmp:=''cidades|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cid_codigo='' || new.cid_codigocobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cid_codigocobranca 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 bairro
    where
      new.fil_codigo = bairro.fil_codigo and
      new.bai_codigocobranca = bairro.bai_codigo;
    tmp:=''bairro|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''bai_codigo='' || new.bai_codigocobranca || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.bai_codigocobranca 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_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 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 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 (
    new.fil_codigo is not null and
    new.con_codigo is not null and
    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;

  select count(*) into numrows
    from medico
    where
      new.fil_codigo = medico.fil_codigo and
      new.med_conselho = medico.med_conselho and
      new.med_crm = medico.med_crm and
      new.med_uf = medico.med_uf;
    tmp:=''medico|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''med_conselho='' || new.med_conselho || ''|'';
    
      tmp:=tmp || ''med_crm='' || new.med_crm || ''|'';
    
      tmp:=tmp || ''med_uf='' || new.med_uf || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.med_conselho is not null and
    new.med_crm is not null and
    new.med_uf is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela medico. 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 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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_paciente
after update on paciente
for each row execute procedure fn_tu_paciente();


drop function fn_td_requisicao() cascade;

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

    delete from requisicaovisualizada
      where
        requisicaovisualizada.fil_codigo = old.fil_codigo and
        requisicaovisualizada.req_codigo = old.req_codigo;

    delete from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.req_codigo = old.req_codigo;

    delete from requisicaoimagens
      where
        requisicaoimagens.fil_codigo = old.fil_codigo and
        requisicaoimagens.req_codigo = old.req_codigo;

    delete from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.req_codigo = old.req_codigo;

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

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

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

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

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

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

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

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

    delete from requisicaocid10
      where
        requisicaocid10.fil_codigo = old.fil_codigo and
        requisicaocid10.req_codigo = old.req_codigo;

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

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

    delete from requisicaousuario
      where
        requisicaousuario.fil_codigo = old.fil_codigo and
        requisicaousuario.req_codigo = old.req_codigo;

    delete from requisicaolanctocaixa
      where
        requisicaolanctocaixa.fil_codigo = old.fil_codigo and
        requisicaolanctocaixa.req_codigo = old.req_codigo;

    delete from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.req_codigo = old.req_codigo;

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

    delete from requisicaomedicamento
      where
        requisicaomedicamento.fil_codigo = old.fil_codigo and
        requisicaomedicamento.req_codigo = old.req_codigo;

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

    delete from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_kodigo = old.req_codigo;

    delete from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.req_codigo = old.req_codigo;


return old;
end;'
language 'plpgsql';
					
create trigger td_requisicao
after delete on requisicao
for each row execute procedure fn_td_requisicao();


drop function fn_ti_requisicao() cascade;

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

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

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

    if (
      new.usr_coddesconto 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 usuario
      where
        new.usr_codelegibilidade = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codelegibilidade || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codelegibilidade 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 formapagto
      where
        new.fpg_codigo = formapagto.fpg_codigo and
        new.fil_codigo = formapagto.fil_codigo;
    tmp:=''formapagto|'';
    
      tmp:=tmp || ''fpg_codigo='' || new.fpg_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fpg_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 formapagto. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

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

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

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

    if (
      new.usr_codguiarepasse 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 convenios
      where
        new.fil_codigo = convenios.fil_codigo and
        new.con_codrepasse = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codrepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codigo is not null and
      new.con_codrepasse is not null and
      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;

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

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

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

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

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

    if (
      new.usr_codexcluida 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 entidade
      where
        new.fil_codigo = entidade.fil_codigo and
        new.ent_codigo = entidade.ent_codigo;
    tmp:=''entidade|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''ent_codigo='' || new.ent_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

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

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

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

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

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

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

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

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

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

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

    if (
      new.fil_codcopia is not null and
      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 usuario
      where
        new.usr_codabertura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codabertura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.usr_codabertura 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 estacoes
      where
        new.est_codigo = estacoes.est_codigo;
    tmp:=''estacoes|'';
    
      tmp:=tmp || ''est_codigo='' || new.est_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.est_codigo is not null and
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela estacoes. 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 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 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;

    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 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 (
      new.fil_codigo is not null and
      new.con_codigo is not null and
      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;

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

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

    select count(*) into numrows
      from paciente
      where
        new.fil_codigo = paciente.fil_codigo and
        new.pac_codigo = paciente.pac_codigo;
    tmp:=''paciente|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pac_codigo='' || new.pac_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 paciente. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;


return new;
end;'
language 'plpgsql';
					
create trigger ti_requisicao
after insert on requisicao
for each row execute procedure fn_ti_requisicao();


drop function fn_tu_requisicao() cascade;

create function fn_tu_requisicao() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logemail
      where
        logemail.fil_codigo = old.fil_codigo and
        logemail.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logemail.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaovisualizada
      where
        requisicaovisualizada.fil_codigo = old.fil_codigo and
        requisicaovisualizada.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaovisualizada.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from exportaintegracaooperadora
      where
        exportaintegracaooperadora.fil_codigo = old.fil_codigo and
        exportaintegracaooperadora.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaoimagens
      where
        requisicaoimagens.fil_codigo = old.fil_codigo and
        requisicaoimagens.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoimagens.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from logsms
      where
        logsms.fil_codigo = old.fil_codigo and
        logsms.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logsms.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaotaxa
      where
        requisicaotaxa.fil_codigo = old.fil_codigo and
        requisicaotaxa.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaotaxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from lotefilialrequisicao
      where
        lotefilialrequisicao.fil_codigo = old.fil_codigo and
        lotefilialrequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lotefilialrequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaonaoconformidade
      where
        requisicaonaoconformidade.fil_codigo = old.fil_codigo and
        requisicaonaoconformidade.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaonaoconformidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolog
      where
        requisicaolog.fil_codigo = old.fil_codigo and
        requisicaolog.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolog.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.fil_codigo = old.fil_codigo and
        agendamento.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agendamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaonotafiscal
      where
        requisicaonotafiscal.fil_codigo = old.fil_codigo and
        requisicaonotafiscal.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaonotafiscal.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolabexterno
      where
        requisicaolabexterno.fil_codigo = old.fil_codigo and
        requisicaolabexterno.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaocid10
      where
        requisicaocid10.fil_codigo = old.fil_codigo and
        requisicaocid10.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaocid10.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteexternorequisicao
      where
        loteexternorequisicao.fil_kodigo = old.fil_codigo and
        loteexternorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteexternorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from loteapoiorequisicao
      where
        loteapoiorequisicao.fil_codigo = old.fil_codigo and
        loteapoiorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela loteapoiorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaousuario
      where
        requisicaousuario.fil_codigo = old.fil_codigo and
        requisicaousuario.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaousuario.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaolanctocaixa
      where
        requisicaolanctocaixa.fil_codigo = old.fil_codigo and
        requisicaolanctocaixa.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaolanctocaixa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examescontrole
      where
        examescontrole.fil_codigo = old.fil_codigo and
        examescontrole.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaomedicamento
      where
        requisicaomedicamento.fil_codigo = old.fil_codigo and
        requisicaomedicamento.req_codigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaomedicamento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from faturarequisicao
      where
        faturarequisicao.fil_kodigo = old.fil_codigo and
        faturarequisicao.req_codigo = old.req_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.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaorequisicao
      where
        requisicaorequisicao.fil_codigo = old.fil_codigo and
        requisicaorequisicao.req_kodigo = old.req_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaorequisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from examerequisicao
      where
        examerequisicao.fil_codigo = old.fil_codigo and
        examerequisicao.req_codigo = old.req_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;
  select count(*) into numrows
    from produtoalimentos
    where
      new.fil_codigo = produtoalimentos.fil_codigo and
      new.cpl_codigo = produtoalimentos.cpl_codigo and
      new.pal_codigo = produtoalimentos.pal_codigo;
    tmp:=''produtoalimentos|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''cpl_codigo='' || new.cpl_codigo || ''|'';
    
      tmp:=tmp || ''pal_codigo='' || new.pal_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.cpl_codigo is not null and
    new.pal_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela produtoalimentos. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from usuario
    where
      new.usr_coddesconto = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_coddesconto || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_coddesconto 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 usuario
    where
      new.usr_codelegibilidade = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codelegibilidade || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codelegibilidade 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 formapagto
    where
      new.fpg_codigo = formapagto.fpg_codigo and
      new.fil_codigo = formapagto.fil_codigo;
    tmp:=''formapagto|'';
    
      tmp:=tmp || ''fpg_codigo='' || new.fpg_codigo || ''|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fpg_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 formapagto. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

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

  select count(*) into numrows
    from usuario
    where
      new.usr_codguiarepasse = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codguiarepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codguiarepasse 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 convenios
    where
      new.fil_codigo = convenios.fil_codigo and
      new.con_codrepasse = convenios.con_codigo;
    tmp:=''convenios|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''con_codigo='' || new.con_codrepasse || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.con_codrepasse is not null and
    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;

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

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

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

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

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

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

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

  select count(*) into numrows
    from filiais_postocoleta
    where
      new.fil_codcopia = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codcopia || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codcopia is not null and
    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 usuario
    where
      new.usr_codabertura = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codabertura || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codabertura 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 estacoes
    where
      new.est_codigo = estacoes.est_codigo;
    tmp:=''estacoes|'';
    
      tmp:=tmp || ''est_codigo='' || new.est_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.est_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela estacoes. 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 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 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;

  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 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 (
    new.fil_codigo is not null and
    new.con_codigo is not null and
    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;

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

  select count(*) into numrows
    from paciente
    where
      new.fil_codigo = paciente.fil_codigo and
      new.pac_codigo = paciente.pac_codigo;
    tmp:=''paciente|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''pac_codigo='' || new.pac_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 paciente. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;


return old;
end;'
language 'plpgsql';
					
create trigger tu_requisicao
after update on requisicao
for each row execute procedure fn_tu_requisicao();





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



