【发布时间】:2017-09-03 23:34:12
【问题描述】:
我有两张桌子。一种叫做BooksRead,一种叫做Authors。 Authors 的主键是 author_last_name 和 author_first_name。
我正在使用 Netbeans IDE。
我想更改还有列 author_last_name 和 author_first_name 的 BooksRead 表,以将 Authors 引用为外键。
ALTER TABLE BooksRead
ADD FOREIGN KEY(AUTHOR_LAST_NAME, AUTHOR_FIRST_NAME)
REFERENCES AUTHORS(AUTHOR_LAST_NAME, AUTHOR_FIRST_NAME);
我尝试了很多不同的方法——包括添加/命名一个约束——但总是得到同样的错误:
[异常,错误代码 30,000,SQLState X0Y45] 无法在表 BOOKSREAD 中添加或启用外键约束“SQL170903182055780”,因为一个或多个外键没有匹配的引用键。
【问题讨论】:
-
您使用的是什么 DBMS?是德比吗?
-
另外,听起来您的
BooksRead表有违反外键约束的数据,即Authors中没有匹配记录 -
Java DB、Apache Derby。
-
这就是令人费解的部分——作者的主键是 author_last_name 和 author_first_name。它应该可以工作。
-
一点也不令人费解。这就是在约束之前开始添加数据时可能发生的情况。
标签: sql foreign-keys derby composite-primary-key