我收到此错误消息。 错误:没有与引用表“Employees”的给定键匹配的唯一约束
以下是我跑过的。
-- Exported from QuickDBD: https://www.quickdatabasediagrams.com/
-- Link to schema: https://app.quickdatabasediagrams.com/#/d/Sa6Ijr
-- NOTE! If you have used non-SQL datatypes in your design, you will have to change these here.
-- Modify this code to update the DB schema diagram.
-- To reset the sample schema, replace everything with
-- two dots ('..' - without quotes).
-- Physical
CREATE TABLE "Departments" (
"dept_no" VARCHAR(255) NOT NULL,
"dept_name" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Departments" PRIMARY KEY (
"dept_no"
)
);
CREATE TABLE "Dept_Emp" (
"emp_no" INT NOT NULL,
"dept_no" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Dept_Emp" PRIMARY KEY (
"emp_no"
)
);
CREATE TABLE "Dept_Manager" (
"dept_no" VARCHAR(255) NOT NULL,
"employee_no" INT NOT NULL,
CONSTRAINT "pk_Dept_Manager" PRIMARY KEY (
"dept_no"
)
);
CREATE TABLE "Employees" (
"emp_no" INT NOT NULL,
"emp_title_id" VARCHAR(255) NOT NULL,
"birth_date" VARCHAR(255) NOT NULL,
"first_name" VARCHAR(255) NOT NULL,
"last_name" VARCHAR(255) NOT NULL,
"sex" VARCHAR(255) NOT NULL,
"hire_date" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Employees" PRIMARY KEY (
"emp_no"
)
);
CREATE TABLE "Salaries" (
"emp_no" INT NOT NULL,
"salary" INT NOT NULL,
CONSTRAINT "pk_Salaries" PRIMARY KEY (
"emp_no"
)
);
CREATE TABLE "Titles" (
"title_id" VARCHAR(255) NOT NULL,
"title" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Titles" PRIMARY KEY (
"title_id"
)
);
ALTER TABLE "Dept_Emp" ADD CONSTRAINT "fk_Dept_Emp_dept_no" FOREIGN KEY("dept_no")
REFERENCES "Departments" ("dept_no");
ALTER TABLE "Dept_Manager" ADD CONSTRAINT "fk_Dept_Manager_dept_no" FOREIGN KEY("dept_no")
REFERENCES "Departments" ("dept_no");
ALTER TABLE "Dept_Manager" ADD CONSTRAINT "fk_Dept_Manager_employee_no" FOREIGN KEY("employee_no")
REFERENCES "Dept_Emp" ("emp_no");
ALTER TABLE "Salaries" ADD CONSTRAINT "fk_Salaries_emp_no" FOREIGN KEY("emp_no")
REFERENCES "Dept_Emp" ("emp_no");
ALTER TABLE "Titles" ADD CONSTRAINT "fk_Titles_title_id" FOREIGN KEY("title_id")
REFERENCES "Employees" ("emp_title_id");
我尝试在“emp_no”中添加 UNIQUE 但没有成功。
请您解释一下为什么我收到此错误消息以及如何修复我的脚本?
谢谢你。
出现错误消息“错误:没有与引用表‘Employees’的给定键匹配的唯一约束”,因为您试图在“Titles”表上创建外键约束,该表引用“emp_title_id”中的“emp_title_id”列员工”表。但是,“Employees”表中的“emp_title_id”列没有唯一约束,并且当您创建外键约束时,PostgreSQL 需要在引用列上有唯一约束或主键。
在“Employees”表中建立外键会更合适,参考“Titles”表。此外,请考虑将列的数据类型更改为整数并建立引用以提高性能。
CREATE TABLE "Titles" (
"title_id" VARCHAR(255) NOT NULL,
"title" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Titles" PRIMARY KEY (
"title_id"
)
);
CREATE TABLE "Employees" (
"emp_no" INT NOT NULL,
"emp_title_id" VARCHAR(255) NOT NULL,
"birth_date" VARCHAR(255) NOT NULL,
"first_name" VARCHAR(255) NOT NULL,
"last_name" VARCHAR(255) NOT NULL,
"sex" VARCHAR(255) NOT NULL,
"hire_date" VARCHAR(255) NOT NULL,
CONSTRAINT "pk_Employees" PRIMARY KEY ("emp_no"),
CONSTRAINT "fk_Employees_emp_title_id" FOREIGN KEY ("emp_title_id")
REFERENCES "Titles" ("title_id")
);