gpt4 book ai didi

更新时 PostgreSQL 表行到底部

转载 作者:行者123 更新时间:2023-11-29 01:49:15 25 4
gpt4 key购买 nike

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

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

在Mysql中,它保持在更新前的位置。有什么办法可以应用这个功能吗?它会是 InnoDB 的特性吗?使用 Navicat Premium 12.1 数据库管理系统。

我认为这只是审美因素,但即便如此我也想学习如何进行这种“永久出家”。

数据库采用 UTF-8 编码和 pt_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 部分:一般使用 ORDER BY

如果您不使用 ORDER BY 语句,则 MySQL 和 PostgreSQL(以及大多数关系型 DBMS 系统)都不会对记录的顺序做出任何 promise 。

您应该重构您的应用程序以使用ORDER BY 语句。如果你想让你的数据集按最新排序,你可以使用类似的东西:

SELECT * FROM yourtable ORDER BY id DESC;
SELECT * FROM yourtable ORDER BY creation_date DESC; -- if your table has such a column

同样,您可以使用以下方法之一首先拥有最旧的对象:

SELECT * FROM yourtable ORDER BY id ASC;
SELECT * FROM yourtable ORDER BY creation_date ASC; -- if your table has such a column

第 2 部分:研究机制

您在问题中添加了更详细的查询:

[...] I know I can use ORDER BY to sort, but I am referring to the internal behavior of the database while performing the UPDATE action.

执行查询时,有多种因素会影响屏幕上显示的数据库记录的顺序。在实际应用中,(实际上)不可能预测这个序列。

我假设这只是 PostgreSQL 为更新记录创建新记录的结果,可以找到 here更新行部分。我建议不要在您的任何应用程序中依赖这种行为。

关于更新时 PostgreSQL 表行到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com