django:为什么transaction.savepoint_rollback(savepoint_id)不回滚数据库中的PK(id)序列?



我正在使用django 1.9psql.我正在利用transaction.savepoint_rollback功能来创建大量实例,然后回滚更改。

一切都按预期工作。但是,我发现有趣的是,此功能不会回滚所创建模型的id sequence。例如,如果创建并回滚了 1000 个对象,则新对象将以大于 1000 的 ID 开头。

想知道是否有人知道如何回滚 ID,或者这根本不可能?

好吧,我发现这不是一个真正与django相关的情况。我发现了这个讨论:

序列的一般思想是,它们产生的数字可以是 有意义地比较平等和大于/小于,但不是 彼此之间的距离。因为它们不受事务性限制 回滚 当您需要无间隙序列时,不应使用它们 数字。

当您需要应用程序设计问题时,这通常是应用程序设计问题的征兆 无间隙序列。尝试找出一种方法来做你需要的事情,当那里 可以是间隙。有时真的需要有间隙 序列 - 例如,在生成支票或发票编号时。

最新更新