________________________________
De: Ronei Heck <[email protected]>
Para: Heloisa Fernanda <[email protected]>; Comunidade PostgreSQL
Brasileira <[email protected]>
Enviadas: Sexta-feira, 13 de Setembro de 2013 16:02
Assunto: Re: [pgbr-geral] Incluir ou Alterar um Registro
>Olá!
>Depende.. Se você estiver fazendo isso em uma PL/PGSQL pode fazer da
seguinte forma:
>...
>UPDATE cadastro_qualquer SET descricao=’TESTE’, valor=50.00 WHERE
codigo=1;
>IF NOT FOUND THEN
>INSERT INTO cadastro_qualquer
(codigo,descricao,valor) VALUES (1,’TESTE’,50.00);
>END IF;
>...
Deu erro de sintaxe.
Um colega meu que usa sqlserver sugeriu desta
forma:
IF (SELECT COUNT(1) FROM cadastro_qualquer WHERE codigo=1)
UPDATE cadastro_qualquer SET descricao=’TESTE’, valor=50.00 WHERE
codigo=1
ELSE
INSERT INTO cadastro_qualquer (codigo,descricao,valor) VALUES
(1,'TESTE',50.00);
Mas deu
erro de sintaxe no IF.
Estou
fazendo direto no pgadmin.
--
Olá Rodnei!
Você precisa criar uma FUNCTION[1] usando PL/PGSQL[2]. Veja um exemplo mais
completo:
CREATE OR REPLACE FUNCTION usuario_assinatura_gravar(
_usuario_assinatura_id INTEGER
, _assinatura BYTEA
) RETURNS VOID AS
$$
DECLARE
BEGIN
-- TENTA ATUALIZAR
UPDATE usuario_assinatura SET assinatura=_assinatura WHERE
usuario_id=_usuario_assinatura_id;
-- SE NAO TENTA INSERIR
IF NOT FOUND THEN
INSERT INTO usuario_assinatura VALUES (_usuario_assinatura_id, _assinatura);
END IF;
END;
$$
LANGUAGE 'PLPGSQL' VOLATILE SECURITY DEFINER;
[1] http://www.postgresql.org/docs/9.2/interactive/plpgsql-structure.html
[2] http://www.postgresql.org/docs/9.2/interactive/plpgsql.html
[]'s
Heloisa
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral