我想为每一天创建唯一的订单号。因此,理想情况下,例如在PostgreSQL中,我可以创建一个序列并读取这些唯一的数字,因为回读都为我提供了新的数字,并且是原子的。然后在一天结束时,我会重置序列。sqlite3 autoincrement - 我错过了什么?
但是,在sqlite3中,我只看到整数字段类型的自动增量。所以说,我建立了一个带有自动增量字段的表格,并插入了一个记录来获得新的数字(似乎是一种非常低效的方法,但无论如何...)当我去阅读最大值后,谁是说另一个任务没有进入并插入另一个记录,从而导致我回读一个未命中,我的第一个太高级了(和另一个任务回读的副本)。
从概念上讲,我要求:
- 快速锁定与等待其他任务
- 增量数
- 检索数
- 解锁
......我只是不知道如何用sqlite3来做到这一点。任何人都可以启发我吗?
我不认为这回答了这个问题,否则我不理解它:假设我这样做,然后获取结果,但在得到结果之前,其他一些进程再次执行该操作?如何让我的计数器增量的结果在让任何其他进程再次递增之前给我提供多个增量的结果?请记住,这不是一个计数器,它是一个orderID;我必须得到一个唯一的号码,当我得到它时我必须知道它是什么。 – fyngyrz
来详细说明:1)我增加2)其他进程增量3)我读取并获得双倍增量,4)其他进程读取并获得相同的双倍增量。看到问题了吗? – fyngyrz
交易是[原子](http://www.sqlite.org/atomiccommit.html);当所有依赖语句都在一个事务中时,您不会发生冲突。 –