kof*_*rts 2 postgresql ruby-on-rails sql-order-by
我的代码取决于表中记录的顺序。我的假设是,可以将表视为列表,以便记录保持顺序。我有一个小的更新代码,如下所示,它将更新表中特定索引处的记录。
p = pieces[index]
p.position = 0
p.save
Run Code Online (Sandbox Code Playgroud)
我检查了此更新之前和此更新之后的记录顺序,然后看到更新之后,已更新的记录已移至列表的最后。我打印Piece.all以打印列表。该命令在mysql中维护,但是当我将其部署到使用postgre的heroku时,该命令没有得到维护,因此这对我来说是一个令人惊讶的发现。
表中没有顺序的保证,并且不应该依赖顺序吗?请纠正我的误会,并感谢您的澄清。
以我的诚实意见,您永远不应依赖顺序。
除非您添加order by子句,否则根据sql规范,行将以未指定的顺序返回。在Postgres中,这意味着您将基本上按照活动行在磁盘上读取的顺序获得行。
MySQL倾向于按插入顺序返回行,这就是为什么您看到行为不同的原因。
如果您希望它们始终按创建顺序返回,则可以使用 Item.order("created_at")
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |