[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.
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)
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
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