我基本上想要创建一个像这样的表
col1|col2
---------
1 1
1 2
1 3
2 1
3 1
2 2
1 4
其中第2列自动增量,但其自动增量值与整个表无关,而是与第1列的值相关联。这可能吗?
答案 0 :(得分:1)
我以为我发现了一个重复的问题,但它适用于PostgreSQL。抱歉暂时将您的问题标记为重复。我已经改变了。
我不确定这是否可以在SQLite中以自动方式实现,但一种解决方案是按步骤执行:
BEGIN
一个事务,INSERT
一行表为col2的NULL。这应该获得一个RESERVED锁,并防止其他并发进程执行相同的操作并导致竞争条件。
SELECT MAX(col2) FROM mytable WHERE col1 = ?
到目前为止为给定组插入的最大值。
UPDATE mytable SET col2 = ?+1 WHERE col1 = ? AND col2 IS NULL
使用步骤2中发现的MAX。
COMMIT
将更改写入文件。