继续获取错误无法添加外键约束,任何想法可能都是noob错误,但我是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)
);
答案 0 :(得分:2)
Extension
必须为PRIMARY KEY
。
您可能希望实现多对多关系。在这种情况下,Extension
中的PersonnelPhone
应为FOREIGN KEY
,Extension
中的tblPhone
应为PRIMARY KEY
。
答案 1 :(得分:2)
那里有几个错误。这是一个有效的模式定义:
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