строка базы данных меняется каждый раз, когда я обновляю строку - PullRequest
0 голосов
/ 01 мая 2020

Поэтому я использую базу данных типа postgres, и у меня есть функция, которая по какой-то причине обновляет строки в базе данных, каждый раз, когда я что-то меняю, она «толкает» строку в конец таблицы, а не остается в той же позиции где это было. это пример того, как я обновляю данные (это часть функции):

users.query.filter_by(username = user).update(dict(computer_id = assign_value, level=level))
db.session.commit()

, но по какой-то причине, когда я вижу таблицу users, я вижу, что полученное значение обновляется толкнул до конца ряда

1 Ответ

0 голосов
/ 01 мая 2020

Нет такой вещи как порядок в записях таблицы. Внутренне, обновление записи обрабатывается как вставка более новой версии, и через некоторое время удаляется более старая версия (если транзакция завершается, более старая версия больше не требуется, по крайней мере, для более новых транзакций). С этой точки зрения даже имеет некоторый смысл, что запись «перемещается» в конец таблицы (даже если таблица не имеет ни начала, ни конца).

Если вы хотите иметь определенную упорядочивая, рассмотрите возможность запроса данных с соответствующим ORDER BY (или любой другой функцией или опциями, которые ваша платформа использует для этого). Если вы запрашиваете данные и не указываете порядок, извлеченные записи могут быть перетасованы любым способом. Никогда не полагайтесь на такие вещи, как «Если я только вставлю в эту таблицу, данные всегда будут возвращаться в той же последовательности, в которой я их вставил» (хотя это может быть правдой при некоторых обстоятельствах).

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