我有一个如下表:
id
是PK并且自动递增。
+-----+--------+--------+
| id | kind | count |
+-----+--------+--------+
[当我使用upsert查询时,并且100同时请求该api。
INSERT INTO Views (kind, count)
VALUES(1, 1)
ON CONFLICT(kind)
DO UPDATE SET count = count + 1
我会得到:
+-----+--------+--------+
| id | kind | count |
+-----+--------+--------+
| 100 | kind-1 | 100 |
+-----+--------+--------+
可以像这样操作sqlite_sequence
表:
UPDATE sqlite_sequence SET seq=(SELECT MAX(id) FROM Views) WHERE name="Views"
将“重置”序列到最后使用的id
。
但是,这根本没有用。在批量UPSERT期间更新sqlite_sequence
将确保中断性能,并且在操作后执行该操作无法避免键序列中的“漏洞”。
另一个选择是重写全部id
,但您真的需要吗?