PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Configuration d'une clé étrangère avec un type de données différent

En fait, cela a du sens, voici pourquoi :

Dans une table, vous pouvez en fait définir n'importe quelle colonne comme clé primaire. Il peut donc s'agir d'un entier, d'un double, d'une chaîne, etc. Même si de nos jours, nous utilisons principalement des entiers ou, plus récemment, des chaînes comme clé primaire dans une table.

Étant donné que la clé étrangère pointe vers la clé primaire d'une autre table, c'est pourquoi vous devez spécifier le type de données de la clé étrangère. Et il doit évidemment s'agir du même type de données.

MODIF :

Les implémentations SQL sont laxistes dans ce cas comme nous pouvons le voir :elles autorisent des types compatibles (INT et BIG INT, Float ou DECIMAL et DOUBLE) mais à vos risques et périls . Tout comme nous pouvons le voir dans votre exemple, ci-dessous.

Cependant, les normes SQL spécifient que les deux types de données doivent être identiques. Si le type de données est un caractère, ils doivent avoir la même longueur, sinon, s'il s'agit d'un entier, ils doivent avoir la même taille et doit les deux être signé ou les deux non signés .

Vous pouvez voir par vous-même ici, un chapitre d'un livre MySQL publié en 2003.

J'espère que cela répond à votre question.