Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Parra

Postgres

Recommended Posts

Boa tarde , sou novo no forum e na area de BD, gostaria de saber com os amigos uma ideia para resolver meu problema:

 

gostaria de criar uma condição para executar transações diferentes, um exemplo:

 

select codigoproduto from itensproduto where codigoproduto = 1

if codigoproduto = null (insert into itensproduto values(1,2,'produto')

else (update itensproduto set quantidade = 2 and descricao = 'produto')

 

deu pra entender a ideia?? eu quero atualizar um item, mas se ele não existir na tabela eu vou inserir

 

por favor perdoem eventuais erros é so pra criar um exemplo!!!

 

desde já agradeço a colaboração

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que possa fazer isto com uma stored procedure, você pode enviar os valores através de parâmetros e fazer o select no banco de dados, se o registro existir você executa o comando update, caso contrário execute o insert. Não utilizo o Postgresql, o exemplo abaixo é do Firebird, mas já dá uma idéia:

 

create or alter procedure tbl_cfop_iu (

cod_cfop char(4),

descricao varchar(256),

notas varchar(1024),

cfop_inverso char(4))

as

begin

if (exists(select cod_cfop from tbl_cfop where (cod_cfop = :cod_cfop))) then

update tbl_cfop

set descricao = :descricao,

notas = :notas,

cfop_inverso = :cfop_inverso

where (cod_cfop = :cod_cfop);

else

insert into tbl_cfop (

cod_cfop,

descricao,

notas,

cfop_inverso)

values (

:cod_cfop,

:descricao,

:notas,

:cfop_inverso);

end

 

 

Um abraço,

 

 

 

 

Boa tarde , sou novo no forum e na area de BD, gostaria de saber com os amigos uma ideia para resolver meu problema:

 

gostaria de criar uma condição para executar transações diferentes, um exemplo:

 

select codigoproduto from itensproduto where codigoproduto = 1

if codigoproduto = null (insert into itensproduto values(1,2,'produto')

else (update itensproduto set quantidade = 2 and descricao = 'produto')

 

deu pra entender a ideia?? eu quero atualizar um item, mas se ele não existir na tabela eu vou inserir

 

por favor perdoem eventuais erros é so pra criar um exemplo!!!

 

desde já agradeço a colaboração

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

o comando "UPSERT" (UPDATE com INSERT em caso de falha) está na lista de "coisas a fazer" (TODO) do projeto do PostgreSQL. Então acredito que você terá que fazer via código mesmo: ou via "stored procedure" ou via programa.

 

PS: se você tiver conhecimento, esteja a vontade para traduzir o UPSERT na wikipédia ou para implementar esta função no PostgreSQL - a comunidade agradece ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.