У меня есть две таблицы:MySQL простая проблема с внешними ключами
Таблица Автор: ID (INTEGER), AUTHOR_NAME и (VARCHAR), First_name (VARCHAR), last_name (VARCHAR), preferred_name (VARCHAR) ,
Таблица соавторстве: ID (INTEGER) author1ID (INTEGER), author2ID (INTEGER), paper_ID (INTEGER) (идентификатор соавторстве бумаги, на который ссылается этой ссылке)
Я хочу добавить внешние ограничения ключа, так что author1ID и author2ID в CoAuthored относятся к ID в Author. Я определил таблицы как таковые:
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;
Это выполняется нормально, но когда я пытаюсь добавить аа кортеж, который содержит author1ID, что Безразлично 't существует в ID, это позволяет мне это сделать, то есть ограничение внешнего ключа не работает.
Что мне нужно сделать по-другому? Я попытался сделать обе таблицы ENGINE = INNODB в операторах create, но тогда я бы получил ERROR 1005, не смог создать таблицу.
Сделать идентификатор в качестве первичного ключа в таблице Authod. –