【发布时间】:2020-12-18 10:08:07
【问题描述】:
我正在尝试将我的 MySQL 设计转换为 PostgreSQL,但是当我尝试创建表“索引”时:
CREATE TABLE "model1"."index" (
"id_index" INT GENERATED ALWAYS AS IDENTITY ,
"index_name" VARCHAR(5) NOT NULL,
"index_type_id_index_type" INT NOT NULL,
"index_provider_id_index_provider" INT NOT NULL,
"miseq" VARCHAR(45) NOT NULL,
"nextseq" VARCHAR(45) NOT NULL,
PRIMARY KEY ("id_index"),
CONSTRAINT "fk_index_index_type"
FOREIGN KEY ("index_type_id_index_type")
REFERENCES "model1"."index_type" ("id_index_type")
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT "fk_index_index_provider"
FOREIGN KEY ("index_provider_id_index_provider")
REFERENCES "model1"."index_provider" ("id_index_provider")
ON DELETE NO ACTION
ON UPDATE NO ACTION);
我收到了这个错误:错误:没有唯一约束匹配给定键的引用表“索引”。
包含外键的两个表是在“索引”表之前创建的:
CREATE TABLE "model1"."index_type" (
"id_index_type" INT GENERATED ALWAYS AS IDENTITY ,
"name" VARCHAR(3) NOT NULL,
PRIMARY KEY ("id_index_type"));
CREATE TABLE "model1"."index_provider" (
"id_index_provider" INT GENERATED ALWAYS AS IDENTITY ,
"name" VARCHAR(40) NOT NULL,
PRIMARY KEY ("id_index_provider"));
【问题讨论】:
-
您正尝试在其他地方创建引用
"index"表的外键。您显示的代码不会导致此错误。 dbfiddle.uk/… -
可能是中间表。中间表在 PostgreSQL 中的工作方式不同吗?
-
我不知道应该是什么“中间”表。你的意思是“临时”表吗?但是您需要向我们展示您的完整代码,以帮助您找到该错误的根本原因。您显示的代码没有问题
-
我用一个表来表示 N:M 关系。错误在此表中,现在已解决。
标签: postgresql foreign-keys constraints unique