postgresql表行位于底部

wz1wpwve  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(327)

我目前正在一个laravel应用程序中从mysql迁移到postgresql,我注意到在更新时,行会移到表的末尾(底部)。
在应用程序中,我知道我可以使用orderby进行排序,但我指的是执行更新操作时数据库的内部行为。
在mysql中,它保持在更新之前的位置。有什么方法可以应用这个功能吗?这会是innodb的功能吗?使用navicat premium 12.1 dbms。
我认为这只是一个审美因素,但即使如此,我还是想学习如何执行这个“永久的圣职”。
数据库采用utf-8编码和pt\u br.utf8排序规则和ctype。下表如下:

CREATE TABLE `properties` (
   `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `title` varchar(255) NOT NULL,
   `description` text NOT NULL,
   `name` varchar(255),
   `rental_price` decimal(10, 2),
   `sale_price` decimal(10, 2)
);

谢谢大家!

wbgh16ku

wbgh16ku1#

第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

第二部分:研究力学
您在问题中添加了更详细的询问:
[…]我知道我可以使用order by进行排序,但我指的是执行更新操作时数据库的内部行为。
在执行查询时,有多种因素会影响屏幕上显示的数据库记录的顺序。在实际应用中,不可能(实际上)预测这个序列。
我假设这只是postgresql为更新后的记录创建新记录的一种效果,可以在这里的updatedarow部分找到。我建议在你的任何申请中都不要依赖这一点。

相关问题