2017-04-01 135 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外键,因为它没有在问题中定义。