我有两张桌子。一种叫做BooksRead,一种叫做Authors。作者的主键同时为author_last_name和author_first_name。
我正在使用Netbeans IDE。
我想更改表BooksRead,该表还具有author_last_name和author_first_name列,以将Authors引用为外键。
ALTER TABLE BooksRead
ADD FOREIGN KEY(AUTHOR_LAST_NAME, AUTHOR_FIRST_NAME)
REFERENCES AUTHORS(AUTHOR_LAST_NAME, AUTHOR_FIRST_NAME);
我尝试过许多不同的方法-包括添加/命名CONSTRAINT-但总是会遇到相同的错误:
最佳答案
听起来您的BooksRead
表包含违反外键约束的数据,即Authors
中没有匹配的记录。
在添加约束之前查找并修复记录
SELECT br.*
FROM BooksRead br
WHERE NOT EXISTS (
SELECT 1 FROM AUTHORS a
WHERE a.AUTHOR_LAST_NAME = br.AUTHOR_LAST_NAME
AND a.AUTHOR_FIRST_NAME = br.AUTHOR_FIRST_NAME
)
这将为您提供没有匹配的
BooksRead
的AUTHOR
行的列表。你可以AUTHORS
或BooksRead
中的作者详细信息有错别字或前导/尾随空白。修正BooksRead
行中的作者详细信息以匹配AUTHORS