set session_replication_role=replica;

alter table paciente add pac_whatsapp varchar(20);

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


alter table requisicaoweb
    add   ent_codigo           integer,
    add   col_codigo           varchar(5),
    add   des_codigo           varchar(5),
    add   rew_descricaoproduto varchar(150),
    add   rew_marcaproduto     varchar(100),
    add   rew_fornecedorproduto varchar(150),
    add   rew_numeroloteproduto varchar(25),
    add   rew_datafabricacao   varchar(40),
    add   rew_datavalidade     varchar(30),
    add   rew_numeroregistroproduto varchar(20),
    add   rew_lacreproduto     varchar(20),
    add   rew_nrsolicitacaoproduto varchar(20),
    add   rew_doctoreferenciaproduto varchar(20),
    add   rew_localcoletaproduto varchar(100),
    add   rew_horacoletaproduto time,
    add   rew_datacoletaproduto date,
    add   rew_temperaturacoletaproduto varchar(40),
    add   rew_sanitariasproduto varchar(500);


create index xif6requisicaoweb on requisicaoweb
(
       fil_codigo,
       pac_codigo,
       ent_codigo
);

create index xif7requisicaoweb on requisicaoweb
(
       fil_codigo,
       col_codigo
);

create index xif8requisicaoweb on requisicaoweb
(
       fil_codigo,
       des_codigo
);



drop function fn_td_coletas() cascade;

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

    delete from coletastaxa
      where
        coletastaxa.fil_codigo = old.fil_codigo and
        coletastaxa.col_codigo = old.col_codigo;

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

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


return old;
end;'
language 'plpgsql';
					
create trigger td_coletas
after delete on coletas
for each row execute procedure fn_td_coletas();


drop function fn_ti_coletas() cascade;

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

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

    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_coletas
after insert on coletas
for each row execute procedure fn_ti_coletas();


drop function fn_tu_coletas() cascade;

create function fn_tu_coletas() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.col_codigo <> new.col_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.col_codigo = old.col_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.col_codigo <> new.col_codigo) then
    select count(*)
      from coletastaxa
      where
        coletastaxa.fil_codigo = old.fil_codigo and
        coletastaxa.col_codigo = old.col_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela coletastaxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.col_codigo <> new.col_codigo) then
    select count(*)
      from examecoletadestino
      where
        examecoletadestino.fil_codigo = old.fil_codigo and
        examecoletadestino.col_codigo = old.col_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examecoletadestino.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.col_codigo <> new.col_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.col_codigo = old.col_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.col_codigo <> new.col_codigo) then
    select count(*)
      from convenios
      where
        convenios.fil_codigo = old.fil_codigo and
        convenios.col_codigo = old.col_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;
  select count(*) into numrows
    from filiais_postocoleta
    where
      new.fil_codigo = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from 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_coletas
after update on coletas
for each row execute procedure fn_tu_coletas();


drop function fn_td_destino() cascade;

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

    delete from destinotaxa
      where
        destinotaxa.fil_codigo = old.fil_codigo and
        destinotaxa.des_codigo = old.des_codigo;

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

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

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

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


return old;
end;'
language 'plpgsql';
					
create trigger td_destino
after delete on destino
for each row execute procedure fn_td_destino();


drop function fn_ti_destino() cascade;

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

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

    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_destino
after insert on destino
for each row execute procedure fn_ti_destino();


drop function fn_tu_destino() cascade;

create function fn_tu_destino() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from requisicaoweb
      where
        requisicaoweb.fil_codigo = old.fil_codigo and
        requisicaoweb.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicaoweb.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from medicodestino
      where
        medicodestino.fil_codigo = old.fil_codigo and
        medicodestino.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela medicodestino.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from destinotaxa
      where
        destinotaxa.fil_codigo = old.fil_codigo and
        destinotaxa.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela destinotaxa.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from examecoletadestino
      where
        examecoletadestino.fil_codigo = old.fil_codigo and
        examecoletadestino.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela examecoletadestino.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from pacienteentidadedestino
      where
        pacienteentidadedestino.fil_codigo = old.fil_codigo and
        pacienteentidadedestino.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteentidadedestino.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from destinoconvlayout
      where
        destinoconvlayout.fil_codigo = old.fil_codigo and
        destinoconvlayout.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela destinoconvlayout.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.des_codigo = old.des_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.des_codigo <> new.des_codigo) then
    select count(*)
      from convenios
      where
        convenios.fil_codigo = old.fil_codigo and
        convenios.des_codigo = old.des_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;
  select count(*) into numrows
    from filiais_postocoleta
    where
      new.fil_codigo = filiais_postocoleta.fil_codigo;
    tmp:=''filiais_postocoleta|'';
    
      tmp:=tmp || ''fil_codigo='' || new.fil_codigo || ''|'';
    
    tmp:=substring(tmp,1,length(tmp)-1);
  if (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela filiais_postocoleta. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from 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_destino
after update on destino
for each row execute procedure fn_tu_destino();


drop function fn_td_entidade() cascade;

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

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

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

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

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

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


return old;
end;'
language 'plpgsql';
					
create trigger td_entidade
after delete on entidade
for each row execute procedure fn_td_entidade();


drop function fn_ti_entidade() cascade;

create function fn_ti_entidade() returns opaque as '
declare
	numrows integer;
	tmp varchar;									 
begin
    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 (
      
      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 (
      
      numrows = 0
    ) then
      raise exception ''o registro nao pode ser inserido, pois um valor informado nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ifkne'');
    end if;

    select count(*) into numrows
      from 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_entidade
after insert on entidade
for each row execute procedure fn_ti_entidade();


drop function fn_tu_entidade() cascade;

create function fn_tu_entidade() returns opaque as '
declare
	numrows integer;
        tmp varchar;										 
begin
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from naoconformidade
      where
        naoconformidade.fil_codigo = old.fil_codigo and
        naoconformidade.ent_codigo = old.ent_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 or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from paciente
      where
        paciente.fil_codigo = old.fil_codigo and
        paciente.ent_codempresa = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela paciente.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from pedido
      where
        pedido.fil_codigo = old.fil_codigo and
        pedido.ent_codigo = old.ent_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 or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from cotacaoentidade
      where
        cotacaoentidade.fil_codigo = old.fil_codigo and
        cotacaoentidade.ent_codigo = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela cotacaoentidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from requisicao
      where
        requisicao.fil_codigo = old.fil_codigo and
        requisicao.ent_codigo = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela requisicao.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from convenioentidade
      where
        convenioentidade.fil_codigo = old.fil_codigo and
        convenioentidade.ent_codigo = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela convenioentidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from pacienteentidade
      where
        pacienteentidade.fil_codigo = old.fil_codigo and
        pacienteentidade.ent_codigo = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela pacienteentidade.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from notafiscal
      where
        notafiscal.fil_codigo = old.fil_codigo and
        notafiscal.ent_codigo = old.ent_codigo into numrows;
    if (numrows > 0) then
     raise exception ''o registro nao pode ser alterado, pois um valor esta sendo utilizado na tabela notafiscal.'';
    end if;
  end if;
  if
    (old.fil_codigo <> new.fil_codigo or 
     old.ent_codigo <> new.ent_codigo) then
    select count(*)
      from receberpagar
      where
        receberpagar.fil_codigo = old.fil_codigo and
        receberpagar.ent_codigo = old.ent_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;
  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 (
    
    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 (
    
    numrows = 0
  ) then
    raise exception ''o registro nao pode ser alterado, pois um valor nao existe na tabela cidades. chave para consulta:[%]'',tmp using errcode=upper(''ufkne'');
  end if;

  select count(*) into numrows
    from 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_entidade
after update on entidade
for each row execute procedure fn_tu_entidade();


drop function fn_td_requisicaoweb() cascade;

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


return old;
end;'
language 'plpgsql';
					
create trigger td_requisicaoweb
after delete on requisicaoweb
for each row execute procedure fn_td_requisicaoweb();


drop function fn_ti_requisicaoweb() cascade;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    select count(*) into numrows
      from 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_requisicaoweb
after insert on requisicaoweb
for each row execute procedure fn_ti_requisicaoweb();


drop function fn_tu_requisicaoweb() cascade;

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

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

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

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

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

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

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

  select count(*) into numrows
    from 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_requisicaoweb
after update on requisicaoweb
for each row execute procedure fn_tu_requisicaoweb();


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



set session_replication_role=replica;

alter table configuracaoweb add cwe_utilizarassinaturaweb boolean default false;

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

