【问题标题】:database row is changing every time I update the row每次我更新行时数据库行都会发生变化
【发布时间】:2020-05-01 15:05:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: database postgresql flask


    【解决方案1】:

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

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

    【讨论】:

    • 这对我来说很奇怪,因为我认为当我使用 SQLite 时它并没有改变
    • 这取决于 DBMS 的实现,所以这可能确实是真的。但你真的不应该依赖这样的东西。
    猜你喜欢
    • 1970-01-01
    • 2021-02-11
    • 2018-07-12
    • 2016-05-24
    • 1970-01-01
    • 2012-05-18
    • 2020-05-19
    • 1970-01-01
    • 2012-11-29
    相关资源
    最近更新 更多