SQLite自动增量基于另一列的值

时间:2017-05-03 04:38:29

标签: sql database sqlite

我基本上想要创建一个像这样的表

col1|col2
---------
1    1
1    2
1    3
2    1
3    1
2    2
1    4

其中第2列自动增量,但其自动增量值与整个表无关,而是与第1列的值相关联。这可能吗?

1 个答案:

答案 0 :(得分:1)

我以为我发现了一个重复的问题,但它适用于PostgreSQL。抱歉暂时将您的问题标记为重复。我已经改变了。

我不确定这是否可以在SQLite中以自动方式实现,但一种解决方案是按步骤执行:

  1. BEGIN一个事务,INSERT一行表为col2的NULL。这应该获得一个RESERVED锁,并防止其他并发进程执行相同的操作并导致竞争条件。

  2. SELECT MAX(col2) FROM mytable WHERE col1 = ?到目前为止为给定组插入的最大值。

  3. UPDATE mytable SET col2 = ?+1 WHERE col1 = ? AND col2 IS NULL使用步骤2中发现的MAX。

  4. COMMIT将更改写入文件。