每次尝试插入到 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'); `
任何帮助都会有帮助!
4条答案
按热度按时间col17t5w1#
您正在尝试插入非整数值
0-8053-1755-4
进入ISBN
定义为整数。mccptt672#
ISBN
是整数,并且给定的值不是整数。将isbn字段的架构更改为char。使用给定的模式,您将获得isbn的无效值。
http://sqlfiddle.com/#!9/4cd19f/1/0号
t9aqgxwy3#
确保插入“isbn”列的值符合属性数据类型。最重要的是,确保表“book\u writed\u by”中用作fk的键在其自己的表中声明为唯一的。例如,“title”字段应在其表“book\u belowns\u to”中声明唯一
xmjla07d4#
我认为你犯了一个错误,isbn被定义为一个整数,所以0-8053-1755-4将计算为-9812。也许你应该写805317554或者使用单引号和varchar2。如果不是这个错误,请仔细检查您是否有一本指定书名和isbn的书。