Ir para conteúdo

Arquivado

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

Fernando Wobeto

[Resolvido] postgres transacao problema insert ou update

Recommended Posts

Boa noite pessoal,

 

vou explicar o que estou fazendo e está acontecendo para entenderem meu caso.

 

No lado do PHP está recendo um array com registros que serao inseridos em uma tabela no banco por exemplo:

 

codigo (auto-increment)

codproduto

qtde

 

Enviando por exemplo os seguntes registros que estao em um array:

Registro 1

codproduto = 23

qtde = 15

 

Registro 2

codproduto = 15

qtde = 2

 

Registro 3

codproduto = 23

qtde = 7

 

entao no PHP eu faco um while e dentro desse while eu faco uma consulta SQL para verificar se ja existe registro no banco com o codproduto informando, se existir ele faz um update, se nao, um insert.

 

Pórem usando transacao, begin e commit ele está retornando um erro de primary key duplicada.

Pelo que entendi e analizei nos retornos do codigo, quando o registro nao existe ainda no banco, e você dentro do array tem por exemplo dois codproduto iguais que serao inseridos em momentos separados, onde 1 seria um INSERT por ainda nao existir e o SEGUNDO um UPDATE pelo primeiro ja ter inserido e agora EXISTIR ele retorna esse erro.

 

a consulta no banco pelo registro ja existente dentro do PHP na insercao do segundo registro com o mesmo codproduto nao identifica a insercao do primeiro, mas a transacao sim e acontece este erro.

 

Sei que ficou meio confuso, mas quem ja passou por isso vai entender! O problema é estranho e confuso mesmo.

 

Se alguem souber como resolver isso, agradeço mtooo!

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esquecam,

 

o problema era eu!

Ele se comporta corretamente!!! Mas foi uma consulta SQL errada que eu estava fazendo!!!!

 

obrigado!

 

Abraço

 

Boa noite pessoal,

 

vou explicar o que estou fazendo e está acontecendo para entenderem meu caso.

 

No lado do PHP está recendo um array com registros que serao inseridos em uma tabela no banco por exemplo:

 

codigo (auto-increment)

codproduto

qtde

 

Enviando por exemplo os seguntes registros que estao em um array:

Registro 1

codproduto = 23

qtde = 15

 

Registro 2

codproduto = 15

qtde = 2

 

Registro 3

codproduto = 23

qtde = 7

 

entao no PHP eu faco um while e dentro desse while eu faco uma consulta SQL para verificar se ja existe registro no banco com o codproduto informando, se existir ele faz um update, se nao, um insert.

 

Pórem usando transacao, begin e commit ele está retornando um erro de primary key duplicada.

Pelo que entendi e analizei nos retornos do codigo, quando o registro nao existe ainda no banco, e você dentro do array tem por exemplo dois codproduto iguais que serao inseridos em momentos separados, onde 1 seria um INSERT por ainda nao existir e o SEGUNDO um UPDATE pelo primeiro ja ter inserido e agora EXISTIR ele retorna esse erro.

 

a consulta no banco pelo registro ja existente dentro do PHP na insercao do segundo registro com o mesmo codproduto nao identifica a insercao do primeiro, mas a transacao sim e acontece este erro.

 

Sei que ficou meio confuso, mas quem ja passou por isso vai entender! O problema é estranho e confuso mesmo.

 

Se alguem souber como resolver isso, agradeço mtooo!

 

abraço

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, estou com o mesmo problema, gostaria de inserir(insert) dados no banco se n existir este usuário,

e se existir q possa ser editado(update), você poderia me mandar um exemplo de como seria?

Desde já lhe agradeço... Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, em php:

<?php
	$query = pg_query($db,"select id from usuarios where id = '$id'");
	if(pg_num_rows($query) > 0){
		//atualizar aqui
	} else{
		//insere aqui
	}

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.