我正在将数据插入数据库,其中每个“批处理”必须具有批次本身的新唯一ID。我可以添加一个批处理表并使用它的AUTOINCREMENT id,但我不需要它用于其他任何东西,所以它似乎过多了。
我正在做一个SELECT MAX(batchid)+ 1 FROM FROM项目,然后用它来插入,这当然容易出现竞争条件(2个新批次同时会产生冲突的ID)
使用IMMEDIATE事务是不切实际的。在进行选择之前是否可以强制将DEFERRED事务升级为EXCLUSIVE?
一些想法;
INSERT INTO items (batchid, value) VALUES ((SELECT MAX(batchid)+1 FROM items), "monkey"), ((SELECT MAX(batchid)+1 FROM items), "banana")
,我们的想法是选择现在明确是更新的一部分吗?