set session_replication_role=replica; alter table exames add exa_proibidowebpaciente boolean DEFAULT false, add exa_proibidowebconvenio boolean DEFAULT false, add exa_proibidowebmedico boolean DEFAULT false, add exa_proibidowebdestino boolean DEFAULT false, add exa_proibidowebfiscal boolean DEFAULT false, add exa_proibidowebresponsavel boolean DEFAULT false; CREATE OR REPLACE FUNCTION alterarproibido() RETURNS integer AS $$ declare r record; cont integer; BEGIN cont := 0; for r in select fil_codigo, exa_codigo, exa_proibidoweb from exames loop case r.exa_proibidoweb when 1 then update exames set exa_proibidowebpaciente = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 3 then update exames set exa_proibidowebmedico = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 5 then update exames set exa_proibidowebconvenio = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 1 + 3 then update exames set exa_proibidowebmedico = true, exa_proibidowebpaciente = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 1 + 5 then update exames set exa_proibidowebconvenio = true, exa_proibidowebpaciente = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 3 + 5 then update exames set exa_proibidowebmedico = true, exa_proibidowebconvenio = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; when 1 + 3 + 5 then update exames set exa_proibidowebpaciente = true, exa_proibidowebmedico = true, exa_proibidowebconvenio = true where fil_codigo = r.fil_codigo and exa_codigo = r.exa_codigo; else end case; cont := cont + 1; end loop; return cont; END; $$ LANGUAGE plpgsql; select alterarproibido(); drop function alterarproibido(); insert into atualizacoes(atu_nome) values ('v19010001_150119.sql'); set session_replication_role=replica; alter table filiais_postocoleta add fil_webstandalone boolean default false; insert into atualizacoes(atu_nome) values ('v19010002_210119.sql'); create table examessaomarcos ( fil_codigo integer not null, lae_codigo integer not null, sma_codexame varchar(15) not null, sma_codmaterial varchar(15) not null, sma_descricaoexame varchar(100), sma_descricaomaterial varchar(100), sma_xml text ); create unique index xpkexamessaomarcos on examessaomarcos ( fil_codigo, lae_codigo, sma_codexame, sma_codmaterial ); create index xif1examessaomarcos on examessaomarcos ( fil_codigo, lae_codigo ); alter table examessaomarcos add primary key (fil_codigo, lae_codigo, sma_codexame, sma_codmaterial); --drop function fn_ti_examessaomarcos() cascade; create function fn_ti_examessaomarcos() 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 ( 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; return new; end;' language 'plpgsql'; create trigger ti_examessaomarcos after insert on examessaomarcos for each row execute procedure fn_ti_examessaomarcos(); --drop function fn_tu_examessaomarcos() cascade; create function fn_tu_examessaomarcos() 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 ( 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; return old; end;' language 'plpgsql'; create trigger tu_examessaomarcos after update on examessaomarcos for each row execute procedure fn_tu_examessaomarcos(); drop function fn_td_labexterno() cascade; create function fn_td_labexterno() returns opaque as ' declare numrows integer; begin select count(*) into numrows from examessaomarcos where examessaomarcos.fil_codigo = old.fil_codigo and examessaomarcos.lae_codigo = old.lae_codigo; if (numrows > 0) then raise exception ''o registro nao pode ser excluido, por estar sendo utilizado na tabela examessaomarcos.''; end if; delete from examessyslab where examessyslab.fil_codigo = old.fil_codigo and examessyslab.lae_codigo = old.lae_codigo; delete from examesunilab where examesunilab.fil_codigo = old.fil_codigo and examesunilab.lae_codigo = old.lae_codigo; 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 examessaomarcos where examessaomarcos.fil_codigo = old.fil_codigo and examessaomarcos.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 examessaomarcos.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examessyslab where examessyslab.fil_codigo = old.fil_codigo and examessyslab.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 examessyslab.''; end if; end if; if (old.fil_codigo <> new.fil_codigo or old.lae_codigo <> new.lae_codigo) then select count(*) from examesunilab where examesunilab.fil_codigo = old.fil_codigo and examesunilab.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 examesunilab.''; end if; end if; 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 ('v19010003_220119.sql'); alter table configuracaoweb add cwe_apresentardadosbrutos varchar(7) default '000000', add cwe_examesdadosbrutos varchar(5000); insert into atualizacoes(atu_nome) values ('v19010004_040219.sql'); alter table configuracaoweb add cwe_hintdadosbrutos varchar(100); insert into atualizacoes(atu_nome) values ('v19010005_120219.sql');