【发布时间】:2022-01-22 09:16:15
【问题描述】:
CREATE TABLE patient
(
patientid INT NOT NULL,
patientname VARCHAR(100),
patientphone VARCHAR(100),
CONSTRAINT PK_patient PRIMARY KEY (patientid)
)
CREATE TABLE doctor
(
doctorid INT NOT NULL,
doctorname VARCHAR(100),
CONSTRAINT PK_doctor PRIMARY KEY (doctorid)
)
CREATE TABLE drug
(
drugname VARCHAR(100),
drugid INT NOT NULL,
CONSTRAINT PK_drug PRIMARY KEY (drugid)
)
CREATE TABLE visit
(
visitid INT NOT NULL,
visitdate DATE,
visitreason VARCHAR(200),
doctorid INT REFERENCES doctor (doctorid),
patientid INT REFERENCES patient (patientid),
PRIMARY KEY (visitid, doctorid, patientid)
)
CREATE TABLE druglinkingtable
(
drugid INT REFERENCES drug (drugid),
visitid INT REFERENCES visit (visitid),
PRIMARY KEY (drugid, visitid)
)
druglinkingtable 中出现错误:
引用表“visit”中没有与外键“FK__druglinki__visit__44FF419A”中的引用列列表匹配的主键或候选键
【问题讨论】:
-
错误不明白怎么办?您已经为
Visit、PRIMARY KEY(visitid,doctorid,patientid)定义了一个 3 部分 PK,并尝试使用 1 部分 FKvisitid INT REFERENCES visit(visitid),来引用它。我看不出有任何理由在Visit上进行 3 部分 PK。 -
您可能只想将
visitid作为visit的主键?或者该专栏的其他目的是什么?
标签: sql sql-server tsql foreign-keys primary-key