postgresql - 如何避免 postgres 弄乱实体的 ID

标签 postgresql primary-key

我今天在我的 postgres 数据库上发现了一个问题,我有一个带有主键的实体,我在那里存储的是 1、2、3、4 等 ID。

今天又去查了下数据库,发现所有的Id都乱七八糟的,像4、2、1之类的,和存储的顺序不对。

我对此类表所做的唯一一件事就是保存新数据并查询实体。我的问题是,什么可能导致数据库像那样困惑?

我怎样才能避免这种情况发生?

最佳答案

您从根本上误解了数据库的工作原理。表格中没有顺序。当您告诉它使用 ORDER BY 时,数据库会对行进行排序。否则,它可以根据最快的获取方法以任意顺序将它们吐出。

可以通过 UPDATE 替换行版本,通过 VACUUM 等更改物理行顺序

关于postgresql - 如何避免 postgres 弄乱实体的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034549/

相关文章:

sql - 使用 PostgreSQL 中的查询结果更新列

php - 获取 MySQL UPDATE 中所有受影响的行

primary-key - SQLite 数据库创建时自动增量附近的语法错误

python - sqlalchemy.exc.ProgrammingError : (psycopg2. ProgrammingError) ":"处或附近的语法错误

postgresql - 如何从 PostgreSQL 的 JSONB 列中的数组中删除重复项?

sql - Informix 到 PostgreSQL - 事务函数

sql - PostgreSQL:错误:关系列不存在

mysql - 主键 ID 达到 bigint 数据类型的限制

mysql - 为什么不使用索引(在主键列上)?

sql-server-2005 - SQL Server 2005 中的死锁!两个实时批量更新正在战斗。为什么?