[
https://issues.apache.org/jira/browse/PHOENIX-957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13984683#comment-13984683
]
James Taylor commented on PHOENIX-957:
--------------------------------------
The UPDATE syntax would be nice, but you can already do this with the UPSERT
SELECT command:
CREATE TABLE table1 (pk1 INTEGER, pk2 INTEGER, col1 INTEGER, CONSTRAINT pk
PRIMARY CONSTRAINT (pk1,pk2));
UPSERT INTO table1(pk1,pk2,col1) VALUES(?,?,0);
...
Then set auto commit to true on your connection (not mandatory, but your perf
will improve):
UPSERT INTO table1(pk1,pk2,col1) SELECT pk1,pk2,col1+1 FROM table1
If you have the situation where there's lots of concurrency on updating this
table, then you have two choices:
1) use sequences (http://phoenix.incubator.apache.org/sequences.html), as
they're atomic:
CREATE SEQUENCE my_seq;
UPSERT INTO table1(pk1,pk2,col1) SELECT pk1,pk2, NEXT VALUE FOR my_seq FROM
table1;
2) control the timestamp yourself to prevent the same timestamp from being used
to update the col1.
> increment column value
> ----------------------
>
> Key: PHOENIX-957
> URL: https://issues.apache.org/jira/browse/PHOENIX-957
> Project: Phoenix
> Issue Type: Improvement
> Reporter: alex kamil
>
> allow incrementing column value using standard update syntax:
> UPDATE table1 SET col1 = col1 + 1 WHERE col2>7;
> for now using upsert select as a workaround:
> UPSERT INTO table1 (id, col1) SELECT id, col1+1 FROM table1 WHERE col2>7;
--
This message was sent by Atlassian JIRA
(v6.2#6252)