2017-04-01 176 views
1

我想開發一個大學的數據庫,並堅持少數表拋出一個約束錯誤。我嘗試了各種解決方法: 1.檢查我的eninge狀態。它是所有表格中的INNODB。 2.在更新上刪除參數(雖然我不確定是否正確)。 3.檢查NULL引用和數據類型。所引用的外鍵與創建引用的表中的主鍵具有相同的數據類型。 這是我的查詢:MySql外鍵約束問題

CREATE TABLE Faculty (
FacNo   CHAR(11)  NOT NULL, 
FacFirstName VARCHAR(30) NOT NULL, 
FacLastName VARCHAR(30) NOT NULL, 
FacCity  VARCHAR(30) NOT NULL, 
FacState  CHAR(2)  NOT NULL, 
FacDept  CHAR(6)  NULL, 
FacRank  CHAR(4)  NULL, 
FacSalary  DECIMAL(10,2) NULL, 
FacSupervisor CHAR(11)  NOT NULL, 
FacHireDate DATETIME  NULL, 
FacZipCode CHAR(10)  NOT NULL, 
CONSTRAINT FacultyPK PRIMARY KEY (FacNo), 
CONSTRAINT SupervisorFK FOREIGN KEY (FacSupervisor) REFERENCES Faculty 
ON DELETE NO ACTION 
ON UPDATE NO ACTION)engine = innodb; 

這是發售表使參考:

CREATE TABLE Offering (
OfferNo  INTEGER  NOT NULL, 
CourseNo  CHAR(6)  NOT NULL, 
OffTerm  CHAR(6)  NOT NULL, 
OffYear  INTEGER  NOT NULL, 
OffLocation VARCHAR(30) NULL, 
OffTime  VARCHAR(10) NULL, 
FacNo   CHAR(11)  NOT NULL, 
OffDays  CHAR(4)  NULL, 
CONSTRAINT OfferingPK PRIMARY KEY (OfferNo), 
CONSTRAINT CourseFK FOREIGN KEY (CourseNo) REFERENCES Course, 
CONSTRAINT FacultyFK FOREIGN KEY (FacNo) REFERENCES Faculty )ENGINE =  INNODB; 

回答

0

你的外鍵引用缺少列:

CONSTRAINT SupervisorFK FOREIGN KEY (FacSupervisor) REFERENCES Faculty(Facno) 

CONSTRAINT CourseFK FOREIGN KEY (CourseNo) REFERENCES Course(CourseNo), 

CONSTRAINT FacultyFK FOREIGN KEY (FacNo) REFERENCES Faculty(FacNo) 

Here是一個SQL小提琴。它沒有CourseNo外鍵,因爲它沒有在問題中定義。