MySQL是否支持表继承?

saj*_*dkk 10 mysql postgresql inheritance

我在PostgreSQL中有这个代码

CREATE TABLE first (
  id serial,
  primary key(id)
);

CREATE TABLE second (primary key(id)) INHERITS (first);
Run Code Online (Sandbox Code Playgroud)

什么是MySQL的等效代码?

Pat*_*ick 8

MySQL不支持表继承.接近功能的唯一方法是使用外键(MySQL也不太擅长):

CREATE TABLE first (
  id serial,
  PRIMARY KEY (id)
);

CREATE TABLE second (
  parent integer REFERENCES first,
  PRIMARY KEY (parent)
);
Run Code Online (Sandbox Code Playgroud)

显然,您必须将PostgreSQL"继承版本"中的任何视图和查询更改为常规多关系查询.

  • "*但这是一个相对较新的概念*" - 实际上并非如此.对象关系概念可以追溯到80年代 (2认同)
  • @a_horse_with_no_name 与关系数据模型相比,“相对较新的概念”。“欠发达”可能是另一个主观限定词,因为表继承在一般使用(例如约束强制)方面仍然存在一些问题,这些问题在多个 PG 主要版本发布时仍然存在,而其他功能确实有改进或大修。 (2认同)