外键约束SQL
问题描述:
继续收到错误无法添加外键约束,任何想法可能是noob错误,但我是SQL新手。外键约束SQL
CREATE TABLE tblDept (
Dept VARCHAR(50),
Name VARCHAR(50)
);
CREATE TABLE tblPersonnel (
PersID INT PRIMARY KEY,
FullName VARCHAR(100),
Address VARCHAR(100),
Dept VARCHAR(50),
Grade VARCHAR (2),
Salary INT,
DateOfBirth DATE,
Manager INT,
FOREIGN KEY(Dept) REFERENCES tblDept(Dept)
);
CREATE TABLE PersonnelPhone (
PersID INT,
Extension INT,
FOREIGN KEY (PersID) REFERENCES tblPersonnel(PersID)
);
CREATE TABLE tblPhone (
Extension INT,
DeviceType VARCHAR,
VoiceMail BOOLEAN,
FOREIGN KEY (Extension) REFERENCES tblPersonnelPhone(Extension)
);
答
Extension
在第二个表必须是PRIMARY KEY
。
您可能想要实现多对多的关系。在这种情况下,Extension
在PersonnelPhone
应该是FOREIGN KEY
和Extension
在tblPhone
应该是PRIMARY KEY
。
答
那里有几个错误。这里有一个工作模式定义:
CREATE TABLE tblDept (
Dept VARCHAR(50) PRIMARY KEY,
Name VARCHAR(50)
);
CREATE TABLE tblPersonnel (
PersID INT PRIMARY KEY,
FullName VARCHAR(100),
Address VARCHAR(100),
Dept VARCHAR(50),
Grade VARCHAR(2),
Salary INT,
DateOfBirth DATE,
Manager INT,
FOREIGN KEY(Dept) REFERENCES tblDept(Dept)
);
CREATE TABLE tblPersonnelPhone (
PersID INT,
Extension INT PRIMARY KEY,
FOREIGN KEY (PersID) REFERENCES tblPersonnel(PersID)
);
CREATE TABLE tblPhone (
Extension INT,
DeviceType VARCHAR(100),
VoiceMail BOOLEAN,
FOREIGN KEY (Extension) REFERENCES tblPersonnelPhone(Extension)
);
以供将来参考,使用SQLFiddle分享这些类型的问题:http://sqlfiddle.com/#!9/2ce29
+0
非常感谢您的帮助和时间,其高度赞赏,也谢谢我将书签该网站。 –
+0
您好,欢迎来到@AaronLyall – Max
同上,'Dept'第一表格,在第二个表中定义的外键使用。 –
非常感谢您的帮助!现在有道理,我失去了小时,这个哈哈 –