alter table layout add lay_tipocapalaudo varchar(1), add lay_capalaudo text;

alter table filiais_postocoleta add lae_codigo integer;

create index xif203filiais_postocoleta on filiais_postocoleta
(
       fil_codigo,
       lae_codigo
);


drop function fn_td_filiais_postocoleta() cascade;

create function fn_td_filiais_postocoleta() returns opaque as '
declare
	numrows integer;										 
begin
    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 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_td_labexterno() cascade;

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

    delete from logimportacaolabexterno
      where
        logimportacaolabexterno.fil_codigo = old.fil_codigo and
        logimportacaolabexterno.lae_codigo = old.lae_codigo;

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

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

    delete from examesatitude
      where
        examesatitude.fil_codigo = old.fil_codigo and
        examesatitude.lae_codigo = old.lae_codigo;

    delete from examesbalague
      where
        examesbalague.fil_codigo = old.fil_codigo and
        examesbalague.lae_codigo = old.lae_codigo;

    delete from examesdelta
      where
        examesdelta.fil_codigo = old.fil_codigo and
        examesdelta.lae_codigo = old.lae_codigo;

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

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

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

    delete from examesreacao
      where
        examesreacao.fil_codigo = old.fil_codigo and
        examesreacao.lae_codigo = old.lae_codigo;

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

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

    delete from examessergiofranco
      where
        examessergiofranco.fil_codigo = old.fil_codigo and
        examessergiofranco.lae_codigo = old.lae_codigo;

    delete from examesalvaro
      where
        examesalvaro.fil_codigo = old.fil_codigo and
        examesalvaro.lae_codigo = old.lae_codigo;

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

    delete from examespardini
      where
        examespardini.fil_codigo = old.fil_codigo and
        examespardini.lae_codigo = old.lae_codigo;

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


return old;
end;'
language 'plpgsql';
					
create trigger td_labexterno
after delete on labexterno
for each row execute procedure fn_td_labexterno();


drop function fn_ti_labexterno() cascade;

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

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

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

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

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

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

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

    if (
      new.usr_codconferir 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_labexterno
after insert on labexterno
for each row execute procedure fn_ti_labexterno();


drop function fn_tu_labexterno() cascade;

create function fn_tu_labexterno() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from filiais_postocoleta
      where
        filiais_postocoleta.fil_codigo = old.fil_codigo and
        filiais_postocoleta.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela filiais_postocoleta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from logimportacaolabexterno
      where
        logimportacaolabexterno.fil_codigo = old.fil_codigo and
        logimportacaolabexterno.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela logimportacaolabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examessolucao
      where
        examessolucao.fil_codigo = old.fil_codigo and
        examessolucao.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessolucao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesdb
      where
        examesdb.fil_codigo = old.fil_codigo and
        examesdb.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesdb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesatitude
      where
        examesatitude.fil_codigo = old.fil_codigo and
        examesatitude.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesatitude.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesbalague
      where
        examesbalague.fil_codigo = old.fil_codigo and
        examesbalague.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesbalague.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesdelta
      where
        examesdelta.fil_codigo = old.fil_codigo and
        examesdelta.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesdelta.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examematcoletalabexterno
      where
        examematcoletalabexterno.fil_codigo = old.fil_codigo and
        examematcoletalabexterno.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examematcoletalabexterno.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesmatrix
      where
        examesmatrix.fil_codigo = old.fil_codigo and
        examesmatrix.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesmatrix.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesrede
      where
        examesrede.fil_codigo = old.fil_codigo and
        examesrede.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesrede.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesreacao
      where
        examesreacao.fil_codigo = old.fil_codigo and
        examesreacao.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesreacao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from pacientelabexterno
      where
        pacientelabexterno.fil_codigo = old.fil_codigo and
        pacientelabexterno.lae_codigo = old.lae_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.lae_codigo <> new.lae_codigo) then
    select count(*)
      from requisicaolabexterno
      where
        requisicaolabexterno.fil_codigo = old.fil_codigo and
        requisicaolabexterno.lae_codigo = old.lae_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.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examessergiofranco
      where
        examessergiofranco.fil_codigo = old.fil_codigo and
        examessergiofranco.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examessergiofranco.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesalvaro
      where
        examesalvaro.fil_codigo = old.fil_codigo and
        examesalvaro.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesalvaro.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examesjalis
      where
        examesjalis.fil_codigo = old.fil_codigo and
        examesjalis.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examesjalis.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from examespardini
      where
        examespardini.fil_codigo = old.fil_codigo and
        examespardini.lae_codigo = old.lae_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examespardini.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.lae_codigo <> new.lae_codigo) then
    select count(*)
      from loteexterno
      where
        loteexterno.fil_codigo = old.fil_codigo and
        loteexterno.lae_codigo = old.lae_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;
  select count(*) into numrows
    from prazoentrega
    where
      new.fil_codigo = prazoentrega.fil_codigo and
      new.prz_codigo = prazoentrega.prz_codigo;
    tmp:=''prazoentrega|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
      tmp:=tmp || ''prz_codigo='' || new.prz_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.fil_codigo is not null and
    new.prz_codigo is not null and
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela prazoentrega. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

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

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

  select count(*) into numrows
    from usuario
    where
      new.usr_codconferir = usuario.usr_codigo;
    tmp:=''usuario|'';
    
      tmp:=tmp || ''usr_codigo='' || new.usr_codconferir || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    new.usr_codconferir 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_labexterno
after update on labexterno
for each row execute procedure fn_tu_labexterno();


insert into atualizacoes(atu_nome) values ('16020001_210916.sql');

