Je travaille sur une mission qui me demande d'écrire des contraintes d'intégrité référentielle sur une table. Il me demande de m'assurer que chaque bataille dans Outcomes est également mentionnée dans Battles et de traiter toutes les violations en mettant la valeur de référence à NULL.
Je travaille avec les schémas suivants
Battles(
name VARCHAR(255) PRIMARY KEY,
date VARCHAR(255),
)
Outcomes(
ship VARCHAR(255),
battle VARCHAR(255),
RESULT VARCAHR(255),
PRIMARY KEY(ship, battle)
)
J'essaie d'ajouter la clé étrangère comme ceci :
alter table outcomes
add foreign key (battle)
references battles(name)
on delete set null
on update cascade;
Je reçois l'erreur suivante :
SQL error:
ERROR: insert or update on table "outcomes" violates foreign key constraint "outcomes_battle_fkey"
DETAIL: Key (battle)=(Pearl Harbor
Je sais que c'est parce que "Pearl Harbor" est dans OUTCOMES mais pas dans BATTLES. Ce que je veux savoir, c'est s'il existe un moyen d'ignorer ce fait et de définir la clé étrangère de toute façon ?