2016-03-08 229 views
0

繼續收到錯誤無法添加外鍵約束,任何想法可能是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) 
    ); 

回答

2

Extension在第二個表必須是PRIMARY KEY

您可能想要實現多對多的關係。在這種情況下,ExtensionPersonnelPhone應該是FOREIGN KEYExtensiontblPhone應該是PRIMARY KEY

+0

同上,'Dept'第一表格,在第二個表中定義的外鍵使用。 –

+0

非常感謝您的幫助!現在有道理,我失去了小時,這個哈哈 –

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

+0

非常感謝您的幫助和時間,其高度讚賞,也謝謝我將書籤該網站。 –

+0

您好,歡迎來到@AaronLyall – Max