我是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)
);
您的主键不应该是有意义的数据imho(它总是导致眼泪)。
与整数链接将是我的建议。