When I update t1 then "VALUE" field should increment
but this field is set to VARCHAR and I would cast it to INTEGER:
UPDATE t1 SET "VALUE"="VALUE"+1 WHERE NOT EXISTS ( SELECT "VALUE" FROM t1 WHERE CAST(t1."VALUE" as INTEGER) = t2."VALUE");
Advertisement
Answer
You will need to cast "VALUE" to an integer to be able to increment it, so:
UPDATE t1 SET "VALUE" = CAST("VALUE" as INTEGER) + 1
Firebird will automatically convert the INTEGER back to a VARCHAR on assignment.
See this dbfiddle.
That said, the proper way to handle this is to change you schema and use an INTEGER type for this column.