PostgreSQL表行在更新时移至底部

时间:2018-09-24 19:32:28

标签: php mysql postgresql laravel-5

我目前正在Laravel应用程序中从MySQL迁移到PostgreSQL,我注意到在更新时,该行将移到表的末尾(底部)。

在应用程序中,我知道可以使用ORDER BY进行排序,但是我指的是执行UPDATE操作时数据库的内部行为。

在Mysql中,它保持在更新之前所处的位置。 有什么方法可以应用此功能吗?它会成为InnoDB功能吗?使用Navicat Premium 12.1 DBMS。

我认为这只是一个美学因素,但是即使如此,我还是想学习如何进行这种“永久定点”。

数据库采用UTF-8编码以及pt_BR.UTF8归类和ctype。 下表是

<canvas></canvas>

谢谢大家!

1 个答案:

答案 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中找到。我建议您在任何应用程序中都不要依赖这种行为。

相关问题