一尘不染

删除所有实例后,Django模型实例的主键不会重置为1

django

我一直在开发Django Web应用程序的脱机版本,并经常删除某些ModelX的模型实例。

我已从管理页面完成此操作,没有遇到任何问题。该模型只有两个字段:名称和顺序,与其他模型没有其他关系。

给新实例下一个有意义的下一个可用pk,当我删除所有实例时,添加一个新实例将产生pk = 1,这是我期望的。

将代码在线移动到我的实际数据库中,我注意到情况并非如此。我需要更改模型实例,因此删除了所有实例,但令我惊讶的是,主键一直在递增而不重置为1。

使用我已经检查过的Django API进入数据库,旧实例消失了,但是即使添加新实例也会产生一个主键,该键将从上次删除的实例离开的地方开始,而不是1。

想知道是否有人知道这里可能是什么问题。


阅读 734

收藏
2020-03-31

共1个答案

一尘不染

正如其他人所述,这完全是数据库的责任。

但是你应该意识到这是理想的行为。ID唯一标识数据库中的实体。因此,它只能引用一行。如果随后删除了该行,则没有理由不希望新行重新使用该ID:如果这样做,则会在现在已删除的具有该ID的实体与该ID之间造成混淆。新创建的可重复使用的文件。这样做是没有意义的,你不应该这样做。

2020-03-31