Bonjour,
J'utilise SSMS 18.11.1. J'ai deux tables avec les règles suivantes : un propriétaire peut avoir plus d'un animal. Un animal appartient à un seul propriétaire.
table owners :
--------------
clé primaire nameID int
name varchar(15)
table pets :
-----------
clé primaire petsID int
nameID int
pets varchar(15)
Lorsque je crée dans SSMS une relation de clé étrangère entre les tables 'pets' et 'owners' et que j'utilise l'option Cascade avec la règle Delete, j'obtiens cette erreur :
'owners' table saved successfully
'pets' table
- Unable to create relationship 'FK_pets_owners'.
Cascading foreign key 'FK_pets_owners' cannot be created where the referencing column 'pets.nameID' is an identity column.
Could not create constraint or index. See previous errors.
Maintenant, considérez cette base de données avec deux tables : produits et fournisseurs. Un fournisseur livre 1 ou plusieurs produits. Un produit est livré par un seul forunisseur.
table products :
----------------
clé primaire prodID int
pname varchar(15)
suppID int
table suppliers :
----------------
clé primaire suppID int
sname varchar(15)
Contrairement à la 1ère databse, ceci fonctionne parfaitement ! Je peux utiliser l'option cascade et je n'obtiens aucune erreur ! Pourquoi ça marche ici et pas avec l'autre ?
Au fait, il est difficile d'imaginer qu'il ne soit pas possible de créer une contrainte de foreign key en cascade lorsque la colonne de référence est une colonne d'identité. C'est 99% des cas. Il n'y a pas d'autres champs communs pour le faire.
Merci d'avance
Romeo.
Partager