Продолжайте получать ошибку внешнего ключа - PullRequest
0 голосов
/ 04 мая 2018

Я получаю ошибку внешнего ключа каждый раз, когда пытаюсь вставить в таблицу 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`)
);

и SQL для Book_Belongs_To:

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 голосов
/ 04 мая 2018

Убедитесь, что значение, вставленное в столбец «ISBN», соответствует типу атрибута. И самое главное, убедитесь, что ключ, который используется как FK в таблице "Book_Written_By", должен быть объявлен как уникальный в своей собственной таблице. Например, поле «title» должно быть объявлено уникальным в его таблице «Book_Belongs_To»

0 голосов
/ 04 мая 2018

Я думаю, что вы допустили ошибку, ISBN определяется как целое число, поэтому 0-8053-1755-4 будет иметь значение -9812. Вероятно, вы должны написать 805317554 или использовать одинарные кавычки и varchar2. Если это не ошибка, пожалуйста, проверьте еще раз, что у вас есть book_written_by с указанным названием и ISBN.

0 голосов
/ 04 мая 2018

ISBN является целым числом, а указанное значение не является целым числом. Измените схему на char для поля ISBN.

Используя данную схему, вы получите недопустимые значения для ISBN.
http://sqlfiddle.com/#!9/4cd19f/1/0

0 голосов
/ 04 мая 2018

Вы пытаетесь вставить нецелое значение 0-8053-1755-4 в ISBN, которое определяется как целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...