gpt4 book ai didi

ruby-on-rails - 更新是否会更改 PostgreSQL 表中记录的顺序?

转载 作者:行者123 更新时间:2023-11-29 11:52:53 28 4
gpt4 key购买 nike

我的代码取决于表中记录的顺序。我的假设是一个表可以被认为是一个列表,以便记录保持顺序。我有一个小的更新代码,如下所示,它将更新表中特定索引处的记录。

p = pieces[index]

p.position = 0

p.save

我检查了这次更新之前和之后的记录顺序然后我看到更新之后更新的记录被移到了列表的最后一个。我打印 Piece.all 来打印列表。订单在 mysql 中维护,但是当我将它部署到使用 postgre 的 heroku 时,订单没有维护,所以这对我来说是一个令人惊讶的发现。

是否不能保证表中的顺序并且不应该依赖于顺序?请纠正我的误解,感谢您的澄清。

最佳答案

在我看来,你永远不应该依赖订单。

根据 sql 规范,行以未指定的顺序返回,除非您添加 order by 子句。在 Postgres 中,这意味着您将获取行,基本上是按照事件行在磁盘上读取的顺序。

MySQL 倾向于按照插入的顺序返回行,这就是为什么您会看到不同的行为。

如果您希望它们始终按创建顺序返回,您可以使用 Item.order("created_at")

关于ruby-on-rails - 更新是否会更改 PostgreSQL 表中记录的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41113430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com