我正在使用django 1.9
和psql
.我正在利用transaction.savepoint_rollback
功能来创建大量实例,然后回滚更改。
一切都按预期工作。但是,我发现有趣的是,此功能不会回滚所创建模型的id sequence
。例如,如果创建并回滚了 1000 个对象,则新对象将以大于 1000 的 ID 开头。
想知道是否有人知道如何回滚 ID,或者这根本不可能?
好吧,我发现这不是一个真正与django
相关的情况。我发现了这个讨论:
序列的一般思想是,它们产生的数字可以是 有意义地比较平等和大于/小于,但不是 彼此之间的距离。因为它们不受事务性限制 回滚 当您需要无间隙序列时,不应使用它们 数字。
当您需要应用程序设计问题时,这通常是应用程序设计问题的征兆 无间隙序列。尝试找出一种方法来做你需要的事情,当那里 可以是间隙。有时真的需要有间隙 序列 - 例如,在生成支票或发票编号时。