J'ai deux tables:problème mysql simple avec les clés étrangères
Tableau Auteur: ID (ENTIER), AUTHOR_NAME (VARCHAR), prenom (VARCHAR), nom_famille (VARCHAR), preferred_name (VARCHAR) .
Tableau coécrit: ID (ENTIER) author1ID (ENTIER), author2ID (ENTIER), paper_ID (ENTIER) (ID du document co-auteur référencé par ce lien)
Je veux ajouter les contraintes de clé étrangère telles que author1ID et author2ID dans CoAuthored se réfèrent à l'ID dans Author. Je définissais les tableaux en tant que tels:
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);
C'est ma tentative de création de la clé étrangère:
ALTER TABLE CoAuthored ADD foreign key (author1ID) references Author(ID) on delete cascade on update cascade;
Cette exécute très bien, mais lorsque je tente d 'ajouter un tuple qui contient un author1ID qui doesn n'existe pas dans ID, il me permet de le faire, ce qui signifie que la contrainte de clé étrangère ne fonctionne pas.
Que dois-je faire différemment? J'ai essayé de faire les deux tables MOTEUR = INNODB dans les instructions de création, mais alors j'obtiendrais une ERREUR 1005 impossible de créer une table.
Définissez l'ID comme clé primaire dans la table Authod. –