Duvida IF Exist mysql

Estou criando um sistema, estou com uma duvida sobre criar uma sql
a situação é o seguinte.

quero fazer um select de uma tabela.
Se existir fazer um update
Senão fazer um insert.

procurei na internet muita coisa sobre IF EXIST UPDATE ELSE INSERT
nao consegui compilar nada, sempre erro de sintaxe.

Será preciso realizar uma consulta prévia e depois o update ou insert.

bom para resolver voce pode fazer o seguinte


select count(*) from tabela

se o valor retornado for maior que 0 é so fazer update se for 0 ai tem que fazer insert muito simples

[quote=CristianPalmaSola10]bom para resolver voce pode fazer o seguinte


select count(*) from tabela

se o valor retornado for maior que 0 é so fazer update se for 0 ai tem que fazer insert muito simples[/quote]
Ainda assim precisará fazer uma consulta prévia.
Ou criar uma stored procedure.

Sim, mas eu naum disse que não iria precisar. e naum vejo problema nenhum em fazer assim…

Com certeza.
Porém, se ele tiver acesso e conhecimento, pode fazer com stored procedure.

Ola thaffa,

Siga a dica dos colegas acima, caso não consiga, poste o código, bem como também o erro.

A sintaxe é mais ou menos assim:

if exists(SEU SELECT) then begin SEU UPDATE end; else begin SEU INSERT end; end if;

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Sim ja havia tentado assim, mas da erro

if exists(SELECT * from estoque where Produto_idProduto = 1 AND Validade = "2012-10-30") then begin UPDATE estoque SET Quantidade=50 Where Produto_idProduto = 1 end; else begin INSERT INTO estoque(Produto_idProduto, Validade, Quantidade) VALUES (5,"2012-11-30",10) end; end if; ;

erro: Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘if exists(SELECT * from estoque where Produto_idProduto = 1 AND Validade = "2012’ at line 1
(0 ms taken)

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘else
begin
INSERT INTO estoque(Produto_idProduto, Validade, Quantida’ at line 1
(0 ms taken)

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘end if’ at line 1
(0 ms taken)

Nota to usando mysql 6,0

mesmo que existisse uma função “pronta”, o SQL teria que varrer a tabela, nada mais simples que fazer isso manualmente. Eu uso isso em tabelas pequenas sem indices para verificar a existência de dados ambiguos em atributos que não são primários…

Visualmente vejo a falta do ponto e vírgula no final das instruções update e insert. Outra coisa também que não causa o erro, mas uso de forma diferente é o uso de aspas simples nas datas.

Veja se não é isto.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

mesmo com os ;
da erro,

ta no caso vou ter que fazer a consulta no programa
comparar no programa
e depois mandar inserir ou dar update?

nossa tres instruções onde poderia ter apenas uma.

com store procedure como ficaria?

thaffa,

Você esta executando a instrução diretamente no banco? Caso sim, não vai funcionar mesmo não, precisa que esteja em uma sp, como já foi pontuado pelos colegas acima.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

a ta que burro eu fui. AEHIEAUHAE fiz uma stored procedure aki e compilou

[code]DELIMITER $$

DROP PROCEDURE IF EXISTS saveestoque.EstoqueEntrada$$

CREATE DEFINER=root@localhost PROCEDURE EstoqueEntrada()
begin
if exists(SELECT * from estoque where Produto_idProduto = 1 AND Validade = “2012-10-30”) then
begin
UPDATE estoque SET Quantidade=10 Where Produto_idProduto = 1 ;
end;
else
begin
INSERT INTO estoque(Produto_idProduto, Validade, Quantidade) VALUES (5,“2012-11-30”,10) ;
end;
end if;
end$$

DELIMITER ;[/code]

agora soh vou modificar pra entrada dos dados =) valeu galera

Aeee,

Valeu pelo retorno, abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL