Postgres没有主要关键缺点

Ale*_*Gad 37 postgresql

在Postgres中没有表的主键有什么缺点吗?由于所有数据无论如何都在堆中无序存储,主键是否只是同时强制执行唯一键和索引的方法?或者是否存在主键在表中提供的基本功能,而不是没有主键的表?

jce*_*ern 35

根据Postgres文档(http://www.postgresql.org/docs/9.2/static/sql-createtable.html):

从技术上讲,PRIMARY KEY只是UNIQUE和NOT NULL的组合,但将一组列标识为主键也提供了有关模式设计的元数据,因为主键意味着其他表可以依赖这组列作为行的唯一标识符.

根据经验,我创造了大量没有它们的桌子.没有主键的一个最大缺点是你不能通过外键进行参照完整性检查 - 因为这种关系需要一个.我认为一些复制解决方案还需要有一个主键,或者每行的单列标识符.

  • 外键约束需要目标列上的"UNIQUE"索引.不必是主键. (10认同)
  • 复制问题的一个特殊情况是,逻辑解码(在9.4中引入)使用PRIMARY KEY约束来确定其行为。值得注意的是,主键的旧值包含在UPDATE和DELETE消息中。没有主键的表只会在逻辑解码流上发送INSERT;更新和删除丢失。 (2认同)