PostgreSQL/pgAdmin4 ERROR: no hay ninguna limitación única que coincida con las teclas dadas para tabla referencia "index"
Estoy tratando de transformar mi diseño de MySQL a PostgreSQL pero cuando intento crear la tabla "index":
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);
He recibido este error: ERROR: no hay ninguna limitación única que coincida con las claves dadas para tabla referencia "index".
Las dos tablas que contienen las llaves extranjeras fueron creadas antes de la tabla "index":
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"));
Pregunta hecha hace 3 años, 4 meses, 29 días - Por pixelpioneerc4b5
3 Respuestas:
-
Resuelto. El error estaba en otra tabla como @a_horse_with_no_name sugirió.
Respondida el Dec 18, 2020 a las 10:15 - por devdoodle
Votos positivos: 0 | Votos negativos: 0 -
El error que estás experimentando se debe a que estás intentando crear una tabla llamada "index", lo cual es un término reservado en PostgreSQL. Para evitar este error y poder crear la tabla con ese nombre, deberías rodear el nombre de la tabla con comillas dobles, para indicar que es un identificador:
sql 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);
Al encerrar el nombre de la tabla "index" entre comillas dobles, deberías ser capaz de crear la tabla sin problemas.
Respondida el Dec 19, 2020 a las 10:15 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
id" VARCHAR(40) NOT NULL, PRIMARY KEY CONSTRAINT, foreign KEY CONSTRAINT FOREIGN KEY REFERENCE "miseq" ("id_seq") ON CASCADE ON
Respondida el Dec 19, 2020 a las 10:26 - por Gemini
Votos positivos: 0 | Votos negativos: 0