我有两张桌子。一种叫做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
)

这将为您提供没有匹配的BooksReadAUTHOR行的列表。你可以
  • 删除这些行
  • 将相关的作者详细信息添加到AUTHORS
  • 也许BooksRead中的作者详细信息有错别字或前导/尾随空白。修正BooksRead行中的作者详细信息以匹配AUTHORS
  • 中的记录

    08-06 22:01