update or insert com incremento no firebird

28/05/2013

0

Bom dia amigos,
Gostaria de saber se é possível fazer um UPDATE OR INSERT usando um valor já cadastrado da tabela, por exemplo:

UPDATE OR INSERT INTO "tbl_historico" ("htr_dia","htr_concluidos") values ('2013-05-28' ,"htr_concluidos" + 1) MATCHING ("htr_dia")


o meu campo htr_dia é um integer. Testando pelo IBOConsole não rolou essa query deu o seguinte problema:

ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -206
Column unknown
htr_concluidos
At line 1, column 68

Statement: UPDATE OR INSERT INTO "tbl_historico" ("htr_dia","htr_concluidos") values ('2013-05-28' ,"htr_concluidos" + 1) MATCHING ("htr_dia")

[]'s
Diego Garcia

Diego Garcia

Responder

Post mais votado

28/05/2013

com ajuda de outro forum, consegui chegar na resposta!

UPDATE OR INSERT INTO "tbl_historico" ("htr_dia","htr_concluidos") 
values ('2013-05-28', COALESCE((SELECT "htr_concluidos" + 1 FROM "tbl_historico" WHERE "htr_dia" = '2013-05-28'), 1)) 
MATCHING ("htr_dia")

Diego Garcia

Diego Garcia
Responder

Mais Posts

28/05/2013

Rafael Cunha

Tente da seguinte forma


UPDATE OR INSERT INTO tbl_historico (htr_dia, htr_concluidos) values ('2013-05-28' , htr_concluidos + 1) MATCHING (htr_dia)
Responder

28/05/2013

Diego Garcia

Rafael, obrigado pela ajuda, mas na verdade você não mudou em nada o código que eu coloquei, sendo assim, a mensagem de erro foi exatamente a mesma:

ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -206
Column unknown
HTR_CONCLUIDOS
At line 1, column 86

Statement: UPDATE OR INSERT INTO tbl_historico (htr_dia, htr_concluidos) values ('2013-05-28' , htr_concluidos + 1) MATCHING (htr_dia)
Responder

31/07/2013

José

Que bom Diego que conseguiu solucionar sua duvida. Sendo assim estou dando o tópico por concluído.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar