我目前正在Laravel应用程序中从MySQL迁移到PostgreSQL,我注意到在更新时,该行将移到表的末尾(底部)。
在应用程序中,我知道可以使用ORDER BY进行排序,但是我指的是执行UPDATE操作时数据库的内部行为。
在Mysql中,它保持在更新之前所处的位置。 有什么方法可以应用此功能吗?它会成为InnoDB功能吗?使用Navicat Premium 12.1 DBMS。
我认为这只是一个美学因素,但是即使如此,我还是想学习如何进行这种“永久定点”。
数据库采用UTF-8编码以及pt_BR.UTF8归类和ctype。 下表是
<canvas></canvas>
谢谢大家!
答案 0 :(得分:3)
第1部分:通常使用ORDER BY
如果不使用ORDER BY
语句,则MySQL和PostgreSQL(以及与此相关的大多数关系DBMS系统)都不会对记录的顺序作出任何保证。
您应该重构您的应用程序以使用ORDER BY
语句。如果要按最新的顺序对数据集进行排序,则可以使用类似以下内容的
SELECT * FROM yourtable ORDER BY id DESC;
SELECT * FROM youtable ORDER BY creation_date DESC; -- if your table has such a column
类似地,可以使用以下任一方法首先拥有最早的对象:
SELECT * FROM yourtable ORDER BY id ASC;
SELECT * FROM youtable ORDER BY creation_date ASC; -- if your table has such a column
第2部分:深入研究力学
您在问题中添加了更详细的查询:
[...]我知道我可以使用ORDER BY进行排序,但是我指的是执行UPDATE操作时数据库的内部行为。
执行查询时,有很多因素会影响屏幕上显示的数据库记录的顺序。在现实生活中,不可能(实际上)预测此序列。
我认为这仅仅是PostgreSQL为更新的记录创建新记录的一种效果,可以在更新行部分的here中找到。我建议您在任何应用程序中都不要依赖这种行为。