Lorsque vous essayez de MODIFIER TABLE dans Postgres 9.5 pour créer une contrainte de clé étrangère: from product_template.product_brand_id
à product_brand.id
ALTER TABLE public.product_template
ADD CONSTRAINT product_template_product_brand_id_fkey
FOREIGN KEY (product_brand_id)
REFERENCES public.product_brand (id) MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE SET NULL;
Retourne une erreur
ERROR: insert or update on table "product_template" violates foreign key constraint "product_template_product_brand_id_fkey"
DETAIL: Key (product_brand_id)=(12) is not present in table "product_brand".
STATEMENT: ALTER TABLE "product_template" ADD FOREIGN KEY ("product_brand_id") REFERENCES "product_brand" ON DELETE set null
Je ne comprends pas pourquoi postgres essaie de trouver product_brand.product_brand_id
, lorsque la touche f provient de product_template.product_brand_id
à product_brand.id
Des idées?
Le message d'erreur indique simplement qu'il existe au moins une ligne dans la table product_template
Qui contient la valeur 12
Dans la colonne product_brand_id
Mais il n'y a pas de ligne correspondante dans le tableau product_brand
Où la colonne id
contient la valeur 12
Key (product_brand_id)=(12)
relie la colonne source de la clé étrangère, pas la colonne cible.
En termes simples, la valeur de FOREIGN KEY (product_brand_id) fournie dans votre instruction ALTER est non présente dans la table source (product_brand).