我创建了一个表Request
,该表具有一个由三列组成的主键,还有一个外键
CREATE TABLE Request
(
Iqama varchar(255) ,
Cid int,
ReqID int,
FOREIGN KEY (Iqama, Cid) REFERENCES Users(Iqama, ID),
PRIMARY KEY (Cid, Iqama, ReqID)
);
我还创建了下表,该表是表Request
的多值属性,但是出现错误
信息1776,级别16,状态0,第51行
在引用表“请求”中没有与外键“ FK__Request_Services__151B244E”中的引用列列表匹配的主键或候选键。Msg 1750,第16级,状态1,第51行
无法创建约束或索引。查看以前的错误。
表格:
CREATE TABLE Request_Services_chosen
(
Iqama varchar(255) ,
Cid int,
ReqId_ int,
Servicechosen varchar(255),
FOREIGN KEY (ReqId_, Iqama, Cid) REFERENCES Request(ReqID, Iqama, Cid),
PRIMARY KEY (ReqId_, Iqama, Cid, Servicechosen)
);
这是Users
表:
CREATE TABLE Users
(
ID int NOT NULL,
Iqama varchar(255) NOT NULL,
Name varchar(255),
Password varchar(255),
Phone varchar(255),
PRIMARY KEY (Iqama, ID)
);
答案 0 :(得分:3)
request
中的主键定义为(cid, iqama, reqid)
,但是在REFERENCES
中的request_services_chosen
子句中,您使用(reqid, iqama, cid)
。那是错误的顺序。
使用相同的顺序。
CREATE TABLE Request_Services_chosen(
...
FOREIGN KEY (Cid,Iqama,ReqId_) REFERENCES Request(Cid,Iqama,ReqID),
...
);