Строка таблицы PostgreSQL при обновлении идет вниз - PullRequest
0 голосов
/ 24 сентября 2018

В настоящее время я выполняю миграцию с MySQL на PostgreSQL в приложении Laravel и заметил, что при обновлении строка переходит в конец таблицы (внизу).

В приложении, которое я знаю, я могу использовать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 Ответ

0 голосов
/ 24 сентября 2018

Часть 1: обычно используйте ORDER BY

Если вы не используете оператор ORDER BY, MySQL и PostgreSQL (и в этом отношении большинство реляционных систем СУБД) неДелайте какие-либо обещания о порядке записи.

Вы должны рефакторинг вашего приложения, чтобы использовать оператор 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, создающего новую запись для обновленной записи, которую можно найти здесь в разделе Обновление строки .Я предлагаю не полагаться на этот bevaiour ни в одном из ваших приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...