我目前正在一个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)
);
谢谢大家!
1条答案
按热度按时间wbgh16ku1#
第1部分:一般用途
ORDER BY
如果你不使用ORDER BY
声明中,mysql和postgresql(以及大多数关系型dbms系统)都没有承诺记录的顺序。您应该重构应用程序以使用
ORDER BY
声明。如果希望数据集按最新优先顺序排序,可以使用以下命令:类似地,您可以使用以下方法之一首先拥有最旧的对象:
第二部分:研究力学
您在问题中添加了更详细的询问:
[…]我知道我可以使用order by进行排序,但我指的是执行更新操作时数据库的内部行为。
在执行查询时,有多种因素会影响屏幕上显示的数据库记录的顺序。在实际应用中,不可能(实际上)预测这个序列。
我假设这只是postgresql为更新后的记录创建新记录的一种效果,可以在这里的updatedarow部分找到。我建议在你的任何申请中都不要依赖这一点。