This will create a simple circular table:
Drop table T3;
CREATE TABLE T3 (KEY INT, ROW INT PRIMARY KEY, USER INT, VAL INT);
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
UPSERT T3 SELECT COALESCE(MAX(KEY), 0) + 1, (select MOD(COALESCE(MAX(KEY), 0), 5) + 1 from T3 where USER = 1), 1, 1 FROM T3 ;
select * from T3;
This will produce:
Key | ROW | USER | VAL |
---|---|---|---|
6 | 1 | 1 | 1 |
7 | 2 | 1 | 1 |
3 | 3 | 1 | 1 |
4 | 4 | 1 | 1 |
5 | 5 | 1 | 1 |
I would prefer to have a Unique Key on Row, USER so that I can rotate over the unique key for multiple users. Any insights?