不断接收外键错误

hkmswyz6  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(217)

每次尝试插入到 Book_Written_By table。
此表的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`)
);

所属书籍的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\u writed\u by”reference“book\u beliens\u to”:

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

任何帮助都会有帮助!

col17t5w

col17t5w1#

您正在尝试插入非整数值 0-8053-1755-4 进入 ISBN 定义为整数。

mccptt67

mccptt672#

ISBN 是整数,并且给定的值不是整数。将isbn字段的架构更改为char。
使用给定的模式,您将获得isbn的无效值。
http://sqlfiddle.com/#!9/4cd19f/1/0号

t9aqgxwy

t9aqgxwy3#

确保插入“isbn”列的值符合属性数据类型。最重要的是,确保表“book\u writed\u by”中用作fk的键在其自己的表中声明为唯一的。例如,“title”字段应在其表“book\u belowns\u to”中声明唯一

xmjla07d

xmjla07d4#

我认为你犯了一个错误,isbn被定义为一个整数,所以0-8053-1755-4将计算为-9812。也许你应该写805317554或者使用单引号和varchar2。如果不是这个错误,请仔细检查您是否有一本指定书名和isbn的书。

相关问题