昨天我们在网站上添加了一个简单的表单,我们刚刚使用Django实现了API视图,该视图已连接到PostgreSQL数据库。 今天,我查询数据库以查看提交了多少行,结果中遇到了一件奇怪的事,我们已经使用Django ORM创建并迁移了我们的模型,因此主键定义为自动递增整数字段,即问题是行ID不连续并且它们是如此多样,当我写这个问题时,最大ID值为252,但是表中只有72条记录, 我以前在其他表中已经看到了这一点,但是这些表经受了删除和更新查询,但是我们只插入到这个新表中,我的问题是:我们的数据被删除了吗?或者它是PostgreSQL中的正常行为? 我已经在google中搜索过,看来唯一的方法是检查WAL日志,但是我们尚未为数据库启用该功能,是否还有另一种方法来检查数据是否一致? 谢谢。
答案 0 :(得分:1)
如果您有多个要添加行的数据库连接,那么您应该期望在序列号结果中看到空洞。
如果Alice要添加一行,则她可能会在未执行COMMIT的同时将序列从10扩展到11。同时,Bob添加了一条记录,将序列增加到12,然后将12分配给他现在要提交的行。因此,数据库存储的ID字段值为10和12而不是11的行。