目前我正在试图通过一个SQL脚本来填充我的datatables,并一直有让在填充我的book表我FKs合作的问题。我读过关于这个问题的其他线程,并试图ON DELETE CASCADE和填充FKS的其他建议第一个没有工作对我也。我也看到了你可以重写然而FK检查,似乎适得其反,使一个工作数据库。

我们已经附上我的剧本和create.sql运行良好,但insert.sql正如我所说卡上的最后一个命令。

谢谢你的时间!

-----
create.sql
-----
CREATE TABLE Dept (
    Dept_ID INT(2) NOT NULL,
    Dept_Name CHAR(16) NOT NULL,
    Dept_Floor INT(1) NOT NULL,
    PRIMARY KEY (Dept_ID)
);

CREATE TABLE Publisher (
    Publisher_Name VARCHAR(50) NOT NULL,
    PubAddress VARCHAR(20) NOT NULL,
    Phone_Number VARCHAR(15) NOT NULL,
    PRIMARY KEY (Publisher_Name)
);

CREATE TABLE Book (
    Book_ID INT(6) NOT NULL,
    Title VARCHAR(32) NOT NULL,
    Dept_ID INT(2),
    Publisher_Name VARCHAR(20),
    PRIMARY KEY (Book_ID),
    FOREIGN KEY (Dept_ID) REFERENCES Dept(Dept_ID),
    FOREIGN KEY (Publisher_Name) REFERENCES Publisher(Publisher_Name)
);
-----
insert.sql
-----
INSERT INTO Dept (Dept_ID, Dept_Name, Dept_Floor) 
VALUES ('01', 'Fantasy', '1'), ('02', 'Sci-Fi', '1'), ('03', 'Fiction', '2'), ('04', 'Educational', '1'), ('05', 'Crime', '2');

INSERT INTO Publisher (Publisher_Name, PubAddress, Phone_Number)
VALUES ('Bloomsbury', '234 Hay Street', '14325673489'), ('Charles Scribner','236 Hone Way','173677654765'),('Pigeon Books','5444 North Street','17884787644'), ('Academic Press', '2354 Bridge Road', '175634598234'), ('Bantam Books', '2623 River Road', '17234648444');

INSERT INTO Book (Book_ID, Title, Dept_ID, Publisher_Name) 
VALUES ('000001','Harry Potter and the Goblet of Fire', '01', 'Bloomsbury'), ('000002','A Brief History of Time', '04', 'Puffin Books'), ('000003','The Great Gatsby', 'Charles Scribners Sons', '03'), ('000004','Advances in Ecological Research', 'Academic Press', '04'), ('000005','The Case of Joe', 'Bantam Books', '05');
分析解答

columns不对齐,你的data length是您给定的数据太小。

CREATE TABLE Dept (
    Dept_ID INT(2) NOT NULL,
    Dept_Name CHAR(16) NOT NULL,
    Dept_Floor INT(1) NOT NULL,
    PRIMARY KEY (Dept_ID)
);

CREATE TABLE Publisher (
    Publisher_Name VARCHAR(50) NOT NULL,
    PubAddress VARCHAR(20) NOT NULL,
    Phone_Number VARCHAR(15) NOT NULL,
    PRIMARY KEY (Publisher_Name)
);

CREATE TABLE Book (
    Book_ID INT(6) NOT NULL,
    Title VARCHAR(40) NOT NULL,
    Dept_ID INT(2),
    Publisher_Name VARCHAR(50),
    PRIMARY KEY (Book_ID),
    FOREIGN KEY (Dept_ID) REFERENCES Dept(Dept_ID),
    FOREIGN KEY (Publisher_Name) REFERENCES Publisher(Publisher_Name)
);

INSERT INTO Dept (Dept_ID, Dept_Name, Dept_Floor) 
VALUES ('01', 'Fantasy', '1'), ('02', 'Sci-Fi', '1'), ('03', 'Fiction', '2'), ('04', 'Educational', '1'), ('05', 'Crime', '2');

INSERT INTO Publisher (Publisher_Name, PubAddress, Phone_Number)
VALUES ('Bloomsbury', '234 Hay Street', '14325673489'), ('Charles Scribner','236 Hone Way','173677654765'),('Pigeon Books','5444 North Street','17884787644'), ('Academic Press', '2354 Bridge Road', '175634598234'), ('Bantam Books', '2623 River Road', '17234648444');

INSERT INTO Book (Book_ID, Title, Dept_ID, Publisher_Name) 
VALUES ('000001','Harry Potter and the Goblet of Fire', '01', 'Bloomsbury'), ('000002','A Brief History of Time', '04', 'Bantam Books'), ('000003','The Great Gatsby', '03', 'Charles Scribner'), ('000004','Advances in Ecological Research', '04', 'Academic Press'), ('000005','The Case of Joe',  '05', 'Bantam Books');