set session_replication_role=replica;

alter table requisicao rename req_datarequisicao to req_datarequisicaooriginal2;
alter table requisicao add req_datarequisicao timestamp default current_timestamp;
update requisicao set req_datarequisicao = req_datarequisicaooriginal2::date + req_hora;

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


alter table requisicao add req_tipoatendimentosave varchar(1), add req_codigoatendimentosave bigint, add req_centrocustosave integer;

alter table paciente add fil_codorigem integer;

create table logpushapp (
       fil_codigo           integer not null,
       lpa_codigo           bigint not null,
       lpa_datahora         timestamp,
       lpa_datahoraenvio    timestamp,
       lpa_enviado          boolean,
       lpa_idpush           varchar(50),
       req_codigo           integer,
       pac_codigo           integer
);

create unique index xpklogpushapp on logpushapp
(
       fil_codigo,
       lpa_codigo
);

create index xif1logpushapp on logpushapp
(
       fil_codigo
);

create index xif2logpushapp on logpushapp
(
       fil_codigo,
       req_codigo
);

create index xif3logpushapp on logpushapp
(
       fil_codigo,
       pac_codigo
);


alter table logpushapp
       add primary key (fil_codigo, lpa_codigo);


drop function fn_td_filiais_postocoleta() cascade;

create function fn_td_filiais_postocoleta() returns opaque as '
declare
	numrows integer;										 
begin
    select count(*) into numrows
      from paciente
      where
        paciente.fil_codorigem = old.fil_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 logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo;
    if (numrows > 0) then
      raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela logpushapp.'';
    end if;

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

    delete from logvalidalote
      where
        logvalidalote.fil_codigo = old.fil_codigo;

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

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

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

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

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

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

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

    delete from filialsmsresumo
      where
        filialsmsresumo.fil_codigo = old.fil_codigo;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    select count(*) into numrows
      from geladeiras
      where
        geladeiras.fil_codigo = old.fil_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.fil_codigo = old.fil_codigo;

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

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

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

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

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

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

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

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

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

    delete from filiaisweb
      where
        filiaisweb.fil_kodigo = old.fil_codigo;

    delete from filiaisweb
      where
        filiaisweb.fil_codigo = old.fil_codigo;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    delete from exames
      where
        exames.fil_codigo = old.fil_codigo;

    select count(*) into numrows
      from fatura
      where
        fatura.fil_codigo = old.fil_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 setores
      where
        setores.fil_codigo = old.fil_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.fil_codigo = old.fil_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_filiais_postocoleta
after delete on filiais_postocoleta
for each row execute procedure fn_td_filiais_postocoleta();


drop function fn_ti_filiais_postocoleta() cascade;

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

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

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

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

    if (
      new.usr_codestoque 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 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;


return new;
end;'
language 'plpgsql';
					
create trigger ti_filiais_postocoleta
after insert on filiais_postocoleta
for each row execute procedure fn_ti_filiais_postocoleta();


drop function fn_tu_filiais_postocoleta() cascade;

create function fn_tu_filiais_postocoleta() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from paciente
      where
        paciente.fil_codorigem = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela paciente.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logpushapp.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from motivorecoleta
      where
        motivorecoleta.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela motivorecoleta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logvalidalote
      where
        logvalidalote.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logvalidalote.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from ambbpa
      where
        ambbpa.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela ambbpa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from categoriaprodutoalimentos
      where
        categoriaprodutoalimentos.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela categoriaprodutoalimentos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from responsavelcertificado
      where
        responsavelcertificado.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from origemnaoconformidade
      where
        origemnaoconformidade.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela origemnaoconformidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filialemailaniversario
      where
        filialemailaniversario.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialemailaniversario.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filialsmsaniversario
      where
        filialsmsaniversario.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialsmsaniversario.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logemail
      where
        logemail.fil_codigo = old.fil_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) then
    select count(*)
      from filialsmsresumo
      where
        filialsmsresumo.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialsmsresumo.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lanctocaixa
      where
        lanctocaixa.fil_codentrefilial = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lotefilial
      where
        lotefilial.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from taxa
      where
        taxa.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela taxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logoffline
      where
        logoffline.fil_coddestino = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logoffline
      where
        logoffline.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from pais
      where
        pais.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pais.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from logsms
      where
        logsms.fil_codigo = old.fil_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) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from acaonaoconformidade
      where
        acaonaoconformidade.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela acaonaoconformidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from procedencianaoconformidade
      where
        procedencianaoconformidade.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela procedencianaoconformidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from banhomaria
      where
        banhomaria.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from identificadorlamina
      where
        identificadorlamina.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela identificadorlamina.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from materiallote
      where
        materiallote.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from examerequisicaohash
      where
        examerequisicaohash.fil_codigo = old.fil_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) then
    select count(*)
      from motivoalteracao
      where
        motivoalteracao.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela motivoalteracao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from tipomaterialcoleta
      where
        tipomaterialcoleta.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela tipomaterialcoleta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from salaatendimento
      where
        salaatendimento.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela salaatendimento.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from agendamento
      where
        agendamento.fil_codigo = old.fil_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) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_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) then
    select count(*)
      from lanctoestoquecmc
      where
        lanctoestoquecmc.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoquecmc.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lanctoestoqueueps
      where
        lanctoestoqueueps.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoqueueps.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lanctoestoquepeps
      where
        lanctoestoquepeps.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela lanctoestoquepeps.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from contrassenharequisicao
      where
        contrassenharequisicao.fil_codigo = old.fil_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) then
    select count(*)
      from solicitarsoroteca
      where
        solicitarsoroteca.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from exportaintegracaohospital
      where
        exportaintegracaohospital.fil_codigo = old.fil_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) then
    select count(*)
      from examerequisicaohistoricolaudo
      where
        examerequisicaohistoricolaudo.fil_codigo = old.fil_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) then
    select count(*)
      from examerequisicaosetor
      where
        examerequisicaosetor.fil_codigo = old.fil_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) then
    select count(*)
      from materialenviado
      where
        materialenviado.fil_codigo = old.fil_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) then
    select count(*)
      from rota
      where
        rota.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela rota.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from montagemkit
      where
        montagemkit.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from transfestoque
      where
        transfestoque.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from orcamento
      where
        orcamento.fil_codigo = old.fil_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) then
    select count(*)
      from estoquemanual
      where
        estoquemanual.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from requisicaoestoque
      where
        requisicaoestoque.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from conferenciaestoque
      where
        conferenciaestoque.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lanctoestoque
      where
        lanctoestoque.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from conferenciaentrada
      where
        conferenciaentrada.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from pedido
      where
        pedido.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from cotacao
      where
        cotacao.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from cfop
      where
        cfop.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela cfop.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from celulaestoque
      where
        celulaestoque.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela celulaestoque.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from unidadesaude
      where
        unidadesaude.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela unidadesaude.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from estantes
      where
        estantes.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela estantes.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from geladeiras
      where
        geladeiras.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from origemplanocusto
      where
        origemplanocusto.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela origemplanocusto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filialimposto
      where
        filialimposto.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filialimposto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from embalagemproduto
      where
        embalagemproduto.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela embalagemproduto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_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) then
    select count(*)
      from servico
      where
        servico.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela servico.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from baixa
      where
        baixa.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.fil_codigo = old.fil_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) then
    select count(*)
      from entidade
      where
        entidade.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela entidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from motivoscancelamentos
      where
        motivoscancelamentos.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela motivoscancelamentos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from formapagto
      where
        formapagto.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela formapagto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from especie
      where
        especie.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela especie.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from series
      where
        series.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela series.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filiaisweb
      where
        filiaisweb.fil_kodigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiaisweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filiaisweb
      where
        filiaisweb.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiaisweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from labexterno
      where
        labexterno.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from loteexterno
      where
        loteexterno.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from log
      where
        log.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from alahospital
      where
        alahospital.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela alahospital.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from loteapoio
      where
        loteapoio.fil_codigo = old.fil_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) then
    select count(*)
      from exportaapoio
      where
        exportaapoio.fil_codigo = old.fil_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) then
    select count(*)
      from exportafiliais
      where
        exportafiliais.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportafiliais.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codcopia = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from filiaisexamesexportar
      where
        filiaisexamesexportar.fil_coddestino = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiaisexamesexportar.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from contrasenha
      where
        contrasenha.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from exportaweb
      where
        exportaweb.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela exportaweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from interface
      where
        interface.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela interface.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from banco
      where
        banco.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela banco.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from agencia
      where
        agencia.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela agencia.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from historicopadrao
      where
        historicopadrao.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela historicopadrao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from prioridade
      where
        prioridade.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela prioridade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from destino
      where
        destino.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela destino.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from grupo
      where
        grupo.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela grupo.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from feriados
      where
        feriados.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela feriados.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from especialidades
      where
        especialidades.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela especialidades.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from coletas
      where
        coletas.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela coletas.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from tabelaprecoexames
      where
        tabelaprecoexames.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela tabelaprecoexames.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from tipomaterial
      where
        tipomaterial.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela tipomaterial.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from unidademedida
      where
        unidademedida.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela unidademedida.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from situacao
      where
        situacao.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela situacao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from principios
      where
        principios.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela principios.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from medicamentos
      where
        medicamentos.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medicamentos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from layout
      where
        layout.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela layout.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from metodologia
      where
        metodologia.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela metodologia.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from recipientes
      where
        recipientes.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela recipientes.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from cidades
      where
        cidades.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela cidades.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from bairro
      where
        bairro.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela bairro.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from materialcoleta
      where
        materialcoleta.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela materialcoleta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from prazoentrega
      where
        prazoentrega.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela prazoentrega.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from historicos
      where
        historicos.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela historicos.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from lanctocaixa
      where
        lanctocaixa.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from centrocusto
      where
        centrocusto.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela centrocusto.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from planoconta
      where
        planoconta.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela planoconta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from contacorrente
      where
        contacorrente.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela contacorrente.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from material
      where
        material.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from medico
      where
        medico.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medico.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from convenios
      where
        convenios.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from exames
      where
        exames.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from fatura
      where
        fatura.fil_codigo = old.fil_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela fatura.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo) then
    select count(*)
      from setores
      where
        setores.fil_codigo = old.fil_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.fil_codigo <> new.fil_codigo) then
    select count(*)
      from paciente
      where
        paciente.fil_codigo = old.fil_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 labexterno
    where
      new.fil_codigo = labexterno.fil_codigo and
      new.lae_codigo = labexterno.lae_codigo;
    tmp:=''labexterno|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''lae_codigo='' || new.lae_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.lae_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela labexterno. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from usuario
    where
      new.usr_codcompras = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codcompras || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codcompras 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_codestoque = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codestoque || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codestoque 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 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;


return old;
end;'
language 'plpgsql';
					
create trigger tu_filiais_postocoleta
after update on filiais_postocoleta
for each row execute procedure fn_tu_filiais_postocoleta();


--drop function fn_ti_logpushapp() cascade;

create function fn_ti_logpushapp() 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_logpushapp
after insert on logpushapp
for each row execute procedure fn_ti_logpushapp();


--drop function fn_tu_logpushapp() cascade;

create function fn_tu_logpushapp() 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_logpushapp
after update on logpushapp
for each row execute procedure fn_tu_logpushapp();


drop function fn_td_paciente() cascade;

create function fn_td_paciente() returns opaque as '
declare
	numrows integer;										 
begin
    delete from logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo and
        logpushapp.pac_codigo = old.pac_codigo;

    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 filiais_postocoleta
      where
        new.fil_codorigem = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codorigem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);

    if (
      new.fil_codorigem 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 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 logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo and
        logpushapp.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 logpushapp.'';
    end if;
  end if;
  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 filiais_postocoleta
    where
      new.fil_codorigem = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codorigem || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codorigem 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 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
    delete from logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo and
        logpushapp.req_codigo = old.req_codigo;

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

    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 logpushapp
      where
        logpushapp.fil_codigo = old.fil_codigo and
        logpushapp.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 logpushapp.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.req_codigo <> new.req_codigo) then
    select count(*)
      from requisicaopaginasimpressas
      where
        requisicaopaginasimpressas.fil_codigo = old.fil_codigo and
        requisicaopaginasimpressas.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 requisicaopaginasimpressas.'';
    end if;
  end if;
  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();

select criasequencia('logpushapp');


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


alter table parametros add par_qtdeitensconsulta integer;

alter table fatura add fat_qtdeguias integer;

alter table requisicao add req_periodogestacional smallint;

set session_replication_role=replica;
alter table examematcoleta add emc_obrigaperiodogestacional boolean default false;

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

alter table estacoes add est_aplicativo boolean;

alter table requisicao add req_lixeirawebpaciente timestamp, add req_lixeirawebmedico timestamp, add req_lixeirawebconvenio timestamp, add req_lixeirawebdestino timestamp, add req_lixeirawebfiscal timestamp, add req_lixeirawebresponsavel timestamp;

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