我是SQL服务器的新手,我的表包含复合主键,如下所示:
CREATE TABLE Systems
(
Layer VARCHAR(25),
System_Name VARCHAR(25) ,
Sub_System_Name VARCHAR(25),
Q1_Scope VARCHAR(25),
Q2_Scope VARCHAR(25),
Q3_Scope VARCHAR(25),
Q4_Scope VARCHAR(25),
U20 VARCHAR(25),
Extracts_Requested VARCHAR(25),
Extracts_Received VARCHAR(25),
Control VARCHAR(25),
Extracts_Reviewed VARCHAR(25),
Control_Frequency VARCHAR(25),
System_Layer_Exists VARCHAR(25),
Notes VARCHAR(25),
Alias VARCHAR(25),
Extract_Requested_Date VARCHAR(25),
PRIMARY KEY (Layer,System_Name,Sub_System_Name)
);
现在我想将Layer,System_Name,Sub_System_Name等列引用到另一个表中:
CREATE TABLE Owns_System
(
Name VARCHAR(25) FOREIGN KEY REFERENCES Employees(Name),
Layer VARCHAR(25) FOREIGN KEY REFERENCES Systems(Layer),
System_Name VARCHAR(25) FOREIGN KEY REFERENCES Systems(System_Name),
Sub_System_Name VARCHAR(25) FOREIGN KEY REFERENCES Systems(Sub_System_Name),
Role VARCHAR(25)
);
它显示了表Systems
的错误“表格系统中没有主要/候选键。”
任何人都可以告诉我这里我做错了什么。
答案 0 :(得分:1)
您不希望声明3个单独的外键约束 - 您需要使用单个复合外键:
CREATE TABLE Owns_System
(
Name VARCHAR(25) FOREIGN KEY REFERENCES Employees(Name),
Layer VARCHAR(25),
System_Name VARCHAR(25),
Sub_System_Name VARCHAR(25),
Role VARCHAR(25),
constraint FK_Blah FOREIGN KEY (Layer,System_Name,Sub_System_Name)
REFERENCES Systems(Layer,System_Name,Sub_System_Name)
);
答案 1 :(得分:0)
FOREIGN KEY是一个表中的字段(或字段集合) 指另一个表中的PRIMARY KEY
所以在将一个表( PKA )作为另一个表( TableB )中的外键引用一个表( PKA )之前,你需要确保列 PKey 是 TableA 中的 主键/唯一键 。
表格设计可能是这样的
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=400000,NAME="low"
size1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=800000,NAME="med"
size2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1900000,NAME="best"
size3.m3u8
请参阅此W3 Schools链接,详细了解外键