Duvida sintaxe em SQL - PostgresSql
05/05/2018
0
Alguém expert por ai poderia me dizer como seria o correto?
.
Select CASE when (select id_tabela as id from tabela where campo = 'conteudo') <> null then update tabela set campo = conteudo where id_tabela = id ELSE insert into tabela (campo) values (conteudo) END
.
Basicamente eu quero verificar: se um registro já existe eu modifico, senão incluo.
Alberto
Posts
07/05/2018
Luiz Vichiatto
Select CASE when (select id_tabela as id from tabela where campo = 'conteudo') <> is not null then update tabela set campo = conteudo where id_tabela = id ELSE insert into tabela (campo) values (conteudo) END
Atenção pode ocorrer problemas, o "campo" da sua pesquisa pode estar populada com espaços, por exemplo, então atenção sobre este tipo de insert para que não tenha duplicação de itens desnecessariamente.
No site da documentação do postgreSQL pode ter mais detalhes, este é direto no item case https://www.postgresql.org/docs/9.2/static/functions-conditional.html
07/05/2018
Luiz Vichiatto
Select CASE when (select id_tabela as id from tabela where campo = 'conteudo') is not null then update tabela set campo = conteudo where id_tabela = id ELSE insert into tabela (campo) values (conteudo) END
07/05/2018
Alberto
30/06/2018
Kleber Santos
CREATE OR REPLACE FUNCTION corrige(conteudo varchar(50), novo_conteudo varchar(50)) RETURNS VOID AS $$
DECLARE
resultado cliente.cliente_id%TYPE;
BEGIN
SELECT INTO resultado cliente_id FROM cliente WHERE cliente_nome = conteudo;
IF NOT FOUND THEN
INSERT INTO cliente(cliente_nome) VALUES (novo_conteudo);
RAISE NOTICE 'MESSAGES: Insert realizado com sucesso';
ELSE
UPDATE cliente SET cliente_nome = novo_conteudo WHERE cliente_nome = conteudo;
RAISE NOTICE 'MESSAGES: Update realizado com sucesso';
END IF;
END;
$$LANGUAGE 'plpgsql';
Para chamar a Procedure:
SELECT * FROM corrige('Marco', 'Marcos');
Clique aqui para fazer login e interagir na Comunidade :)