【发布时间】:2019-02-23 23:01:02
【问题描述】:
java.sql.SQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败(
library.book_loans,约束book_loans_ibfk_3外键(isbn)参考book(isbn))
这是我的表格代码
| book_loans |
CREATE TABLE `book_loans` (
`loan_id` int(11) NOT NULL,
`isbn` varchar(10) DEFAULT NULL,
`Card_ID` mediumint(9) NOT NULL AUTO_INCREMENT,
`date_out` date DEFAULT NULL,
`due_date` date DEFAULT NULL,
`date_in` date DEFAULT NULL,
PRIMARY KEY (`loan_id`),
KEY `book_loans_ibfk_2` (`Card_ID`),
KEY `isbn` (`isbn`),
CONSTRAINT `book_loans_ibfk_2` FOREIGN KEY (`Card_ID`)
REFERENCES `borrower` (`Card_ID`),
CONSTRAINT `book_loans_ibfk_3` FOREIGN KEY (`isbn`)
REFERENCES `book` (`isbn`)
) ENGINE=InnoDB
AUTO_INCREMENT=1002
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci
| 书 |
CREATE TABLE `book` (
`isbn` varchar(10) NOT NULL,
`title` varchar(500) DEFAULT NULL,
PRIMARY KEY (`isbn`)
) ENGINE=InnoDB
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci
| 借款人 |
CREATE TABLE `borrower` (
`Card_ID` mediumint(9) NOT NULL AUTO_INCREMENT,
`Ssn` varchar(11) DEFAULT NULL,
`Bname` varchar(50) DEFAULT NULL,
`Address` varchar(100) DEFAULT NULL,
`Phone` varchar(15) DEFAULT NULL,
PRIMARY KEY (`Card_ID`),
UNIQUE KEY `Ssn` (`Ssn`)
) ENGINE=InnoDB
AUTO_INCREMENT=1002
DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci
【问题讨论】:
-
这不是有效的 T-SQL,我假设您没有使用 SQL Server 那么为什么要标记它? SQL Server 和 MySQL 是 2 个非常不同的 RDBMS。关于您的代码,请务必花时间格式化它;它不可读。最后,您似乎忘了问一个问题,这在发布问题时非常重要。请向我们提出问题,以便我们为您提供帮助。谢谢。
-
很可能您的
PRIMARY KEY意味着loan_id列应该是book_loans表中的AUTO_INCREMENT之一,这应该可以解决您的错误。 -
我格式化了您的代码并删除了 SQL-Server 标签,因为这显然是 MySQL 代码。现在您能否编辑您的问题,告诉我们您在收到此错误时正在做什么,以及您不清楚错误消息中的内容。
标签: mysql database foreign-keys