继续接收外键错误

时间:2018-05-04 19:08:56

标签: mysql sql

每次尝试插入Book_Written_By表时,我都会收到外键错误。

此表的SQL是:

`CREATE TABLE `Book_Written_By` (
`title` char ( 255 ),
`ISBN`  varchar2,
`fname` char ( 255 ),
`lname` char ( 255 ),
FOREIGN KEY(`title`,`ISBN`) REFERENCES `Book_Belongs_To`(`title`,`ISBN`),
FOREIGN KEY(`fname`,`lname`) REFERENCES `Author`(`fname`,`lname`)
);

和Book_Belongs_To的SQL是:

CREATE TABLE `Book_Belongs_To` (
`section_name`  char ( 255 ),
`year`  integer,
`title` char ( 255 ) NOT NULL UNIQUE,
`ISBN`  varchar2 NOT NULL UNIQUE,
`publisher` char ( 255 ),
`inventory` integer NOT NULL,
`price` float NOT NULL,
`edition`   char ( 255 ),
PRIMARY KEY(`ISBN`),
FOREIGN KEY(`section_name`) REFERENCES `Section`(`name`)
);'

错误:

  

外键不匹配 - “Book_Written_By”引用“Book_Belongs_To”:

INSERT INTO `Book_Written_By` (`title`, `ISBN`, `fname`, `lname`) 
VALUES ('Fundamentals of Database Systems', '0-8053-1755-4', 'Ramez A. ', 'Elmasri'); `

任何帮助都会有所帮助!

4 个答案:

答案 0 :(得分:0)

您正尝试将非整数值0-8053-1755-4插入到ISBN中,该as! MyCell定义为整数。

答案 1 :(得分:0)

我认为你犯了一个错误,ISBN被定义为一个整数,因此0-8053-1755-4将评估为-9812。您可能应该编写805317554或使用单引号和varchar2。如果这不是错误,请仔细检查您是否拥有指定标题和ISBN的book_written_by。

答案 2 :(得分:0)

ISBN是整数,给定的值不是整数。将架构更改为ISBN字段的char。

使用您给定的架构,您将获得ISBN的无效值 http://sqlfiddle.com/#!9/4cd19f/1/0

答案 3 :(得分:0)

确保将值插入" ISBN"列符合属性数据类型。最重要的是确保在表格#34; Book_Written_By"中用作FK的密钥。应该在自己的表中声明为唯一的。例如," title"字段应在其表格中声明为唯一的#Book; Book_Belongs_To"