【发布时间】:2014-12-23 04:51:41
【问题描述】:
我收到此错误:
ERROR: there is no unique constraint matching given keys for referenced table "abteilung"
对于这个架构:
CREATE TABLE Person (
svnr VARCHAR(40) PRIMARY KEY,
anschrift VARCHAR(40) NOT NULL,
name VARCHAR(20) NOT NULL
);
BEGIN;
CREATE TABLE Mitarbeiter (
svnr VARCHAR(40) PRIMARY KEY REFERENCES Person(svnr),
beschaeftigt_seit DATE NOT NULL,
gehalt NUMERIC(5,2),
CHECK(gehalt > 0),
abteilung INTEGER NOT NULL,
krankenhaus INTEGER NOT NULL
);
CREATE TABLE Krankenhaus (
kid INTEGER PRIMARY KEY DEFAULT nextval('seq_krankenhaus'),
anschrift VARCHAR(40) NOT NULL,
name VARCHAR(20) NOT NULL,
geleitet_von VARCHAR(40) REFERENCES Mitarbeiter(svnr) DEFERRABLE INITIALLY DEFERRED
);
CREATE TABLE Abteilung (
abid INTEGER DEFAULT nextval('seq_abteilung'),
name VARCHAR(40) NOT NULL,
anschrift VARCHAR(40) NOT NULL,
koordiniert VARCHAR(40) REFERENCES Mitarbeiter(svnr) DEFERRABLE INITIALLY DEFERRED,
krankenhaus INTEGER REFERENCES Krankenhaus(kid),
PRIMARY KEY (abid, krankenhaus)
);
ALTER TABLE Mitarbeiter ADD CONSTRAINT fk_abteilung FOREIGN KEY (abteilung, krankenhaus) REFERENCES Abteilung(abid, krankenhaus) DEFERRABLE INITIALLY DEFERRED;
COMMIT;
我做错了什么?
在将列krankenhaus 添加到表mitarbeiter 并更改alter table 命令后,我仍然收到相同的错误...
【问题讨论】:
-
在您应用@a_horse 的建议后,错误消息与您的代码相矛盾。它应该工作。不过,您确实选择了较差的选项。您最好删除多余的
mitarbeiter.krankenhaus,只使用abid进行PK 和FK。
标签: postgresql database-design foreign-keys