提问者:小点点

foreign-引用具有不能唯一的单独列的复合键


我是SQL新手,在MySQL中创建表时遇到以下错误:

源路径\create_bookauthor_table.sql错误:1822:无法添加外键约束。引用的表“author”中缺少约束“book_author_ibfk_1”的索引

我有一个作者表,与一个作者可以创作多本书的书表具有M-N关系,一本书可以由多个作者创作。

因此,我需要创建一个名为BookAuthor的连接表,它实际上可以显示作者所写的书,或者更确切地说是每本书的作者。

我不能使名字和姓氏是唯一的,因为许多人可以共享一个名字。

我想知道如何强制执行外键呢?

我的Book代码如下所示:

create table book (
  isbn varchar(20) not null,
  '
  '
  '
  primary key(isbn),
  
); 

对于作者:

create table author (
  first_name varchar(20) not null, 
  last_name varchar(20) not null, 
  primary key(last_name, first_name)
); 

对于抛出错误的BookAuthor:

create table book_author (
  isbn varchar(20) not null,
  first_name varchar(20) not null, 
  last_name varchar(20) not null, 
  primary key(isbn, first_name, last_name),
  foreign key(first_name, last_name) references author(first_name, last_name),
  foreign key(isbn) references book(isbn)
); 

共1个答案

匿名用户

您的主键不应该是有意义的数据imho(它总是导致眼泪)。

与整数链接将是我的建议。