首页 > 解决方案 > 每次我更新行时数据库行都会发生变化

问题描述

所以我正在使用postgres类型数据库,并且我有一个函数,每次我更改某些内容时,它都会出于某种原因更新数据库中的行,它会将行“推”到表的末尾,而不是保持在原来的位置。这是我更新数据的一个例子(这是函数的一部分):

users.query.filter_by(username = user).update(dict(computer_id = assign_value, level=level))
db.session.commit()

但是由于某种原因,每当我看到users表格时,我都可以看到我更新的任何值都被推到了行尾

标签: databasepostgresqlflask

解决方案


没有对表的记录进行排序这样的事情。在内部,更新记录被处理为插入新版本并在某些时候删除旧版本(如果事务完成,则不应再次需要旧版本,至少对于较新的事务而言)。从这个角度来看,将记录“移动”到表的末尾甚至是有道理的(即使表没有任何开始或结束)。

如果您想要某种顺序,请考虑使用适当的ORDER BY(或您的框架用来执行此操作的任何函数或选项)查询数据。如果您查询数据并且未指定排序,则检索到的记录可能会以任何方式打乱。永远不要依赖诸如“如果我只在此表中插入,数据将始终以与我插入它相同的顺序返回”之类的东西(尽管在某些情况下这可能是正确的)。


推荐阅读