我有两张桌子:
表作者:ID (INTEGER)、author_name (VARCHAR)、first_name (VARCHAR)、last_name (VARCHAR)、preferred_name (VARCHAR)。
表 CoAuthored: ID (INTEGER) author1ID (INTEGER), author2ID (INTEGER), paper_ID (INTEGER) (此链接引用的合着论文的 ID)
我想添加外键约束,以便 CoAuthored 中的 author1ID 和 author2ID 引用 Author 中的 ID。我这样定义表:
CREATE TABLE Author(ID INT, author_name VARCHAR(100), preferred_name VARCHAR(100), first_name VARCHAR(100), last_name VARCHAR(100), PRIMARY KEY(ID)) ENGINE=INNODB;
CREATE TABLE CoAuthored(ID INT, author1ID INT, author2ID INT, paper_ID INT);
这是我创建外键的尝试:
ALTER TABLE CoAuthored ADD foreign key (author1ID) references Author(ID) on delete cascade on update cascade;
这执行得很好,但是当我尝试添加一个包含 ID 中不存在的 author1ID 的元组时,它允许我这样做,这意味着外键约束不起作用。
我需要做些什么不同的事情?我尝试在创建语句中创建两个表 ENGINE=INNODB,但随后我会得到一个 ERROR 1005 can't create table。