2016-03-08 3 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.

Возможно, вы захотите реализовать отношения «многие ко многим». В этом случае Extension в PersonnelPhone должен быть FOREIGN KEY и Extension в tblPhone должен быть 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

Смежные вопросы