removido
(usa Nenhuma)
Enviado em 15/01/2023 - 19:08h
Olá, muito obrigado pela dica ainda não tinha pesquisado sobre. Tentei executar criando somente no ramal mas não obtive sucesso, vou continuar estudando aqui, ele tem que barrar o mesmo ramal, e não consegui novamente. Uma pessoa pode ter vários números mas a condição é que não exista nenhum igual.
create table ramais (
id_ram integer not null,
infos jsonb not null
);
select *from ramais;
create unique index on ramais (id_ram, (infos->>'nr_ramal'));
insert into ramais (id_ram,infos) values
(1,'[{"nm_setor":"protocolo","nm_servidor":"Pedro", "nr_ramal": "2256"},
{"nm_setor":"secretaria","nm_servidor":"Vitor", "nr_ramal": "2269"},
{"nm_setor":"financeiro","nm_servidor":"Ana", "nr_ramal": "2216"}]');
insert into ramais (id_ram,infos) values
(2,'[{"nm_setor":"protocolo","nm_servidor":"Paulo", "nr_ramal": "2756"},
{"nm_setor":"secretaria","nm_servidor":"Vitoria", "nr_ramal": "2279"},
{"nm_setor":"financeiro","nm_servidor":"Anna", "nr_ramal": "2716"}]');
insert into ramais (id_ram,infos) values
(3,'[{"nm_setor":"protocolo","nm_servidor":"Patrick", "nr_ramal": "2246"},
{"nm_setor":"secretaria","nm_servidor":"Vanessa", "nr_ramal": "2249"},
{"nm_setor":"financeiro","nm_servidor":"Igor", "nr_ramal": "2416"}]');
CREATE VIEW select_ramais AS
select infos->'nm_servidor' as servidor, infos->'nr_ramal' AS ramal
from ramais where infos->>'nm_servidor' = 'Anna';
--nao ta puxando
select * from select_ramais
create or replace function inserir(
p_id_ram integer,
p_infos jsonb)
returns text
language 'plpgsql'
cost 100
as $body$
begin
if ( SELECT EXISTS (SELECT infos FROM ramais WHERE infos->>'nr_ramal' = p_infos->>'nr_rmal') ) then
return 'ja cadastrado no Banco';
else
insert into ramais (id_ram,infos) values (p_id_ram, p_infos);
return 'informacoes cadastradas com sucesso !!';
end if;
end;
$body$;
select *from inserir (
4,'{"nm_setor":"protocolo","nm_servidor":"Patrick", "nr_ramal": "2246"}'
)