У меня есть две таблицы:
Автор таблицы: ID (INTEGER), имя_пользователя (VARCHAR), имя_папки (VARCHAR), имя_папки (VARCHAR), предпочтительное_имя (VARCHAR).
Таблица CoAuthored: ID (INTEGER) author1ID (INTEGER), author2ID (INTEGER), paper_ID (INTEGER) (идентификатор статьи в соавторстве, на которую ссылается эта ссылка)
Я хочу добавить ограничения внешнего ключа, такие как author1ID и author2IDв соавторстве обратитесь к 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;
Это выполняется просто отлично, но когда я пытаюсь добавить кортеж, который содержитauthor1ID, который не существует в ID, он позволяет мне это делать, то есть ограничение внешнего ключа не работает.
Что мне нужно сделать по-другому?Я попытался сделать обе таблицы ENGINE = INNODB в операторах create, но затем я получил бы ОШИБКУ 1005. Невозможно создать таблицу.