@Zozo :
Je réalise un UPDATE sur toutes les tables ou est contenue la clé primaire, ainsi que sur les clés primaires de certaines autres tables (car d'autres tables ont pour clé primaire une partie de la clé primaire de ma première table pfiou)
Et non je débute pas ^^
.....
Notre ami ne débute pas, et ne se trompe pas non plus.
Il a tout à fait le droit de penser qu'une clé primaire peut être mise à jour.
La seule raison conceptuelle et logique qui empêche la modification d'une clé primaire est la contrainte d'unicité locale et d'intégrité référencielle avec d'autres clés étrangères
Cette raison est levée si la modification de la clé primaire respecte la règle d'unicité et si la modification en cascade est déclenchée sur les liens avec les clés étrangères.
Et comme le dit notre ami, il prouve qu'il a conscience des concéquences de la modification de la clé primaire.
Ceci dit, je ne suis pas tout à fait d'accord avec le fait de voir dans la clé primaire un champ spécialement différent des autres champs d'une table ni toujours un champ numérique "transparent" à l'usage et à cacher.
La clé primaire est un champ comme les autres dont le rôle est spécial : c'est le champ élu pour représenter les enregistrements de la table dans des liens externes (clé étrangère) par exemple un email pour identifier un membre ou un client qui achète en ligne
La clé primaire n'est pas toujours un n° incrémenté, c'est tout simplement une habitude, qui d'ailleurs n'est pas pratique dans le milieu professionnel car le principe renvoi au notion d'accès direct utilisant un n° de rang qui va à l'encontre du principe de l'accès séquentiel-indexé qui lui est basé sur des index choisis parmi les champs de la table.
Le vrai rôle de la clé primaire est de servir comme clé unique d'accès à un enregistrement l'ors d'un passage via une relation de clé étrangère pour réaliser une jointure (passerelle) de données et ainsi étendre l'espace de l'information utile.
Mais le fait qu'un champ soit une clé primaire ne lui attribut guère le rôle exclusif de clé d'accès unique aux enregistrements sinon à quoi servent les index uniques qu'on peut déclarer sur tous les champs de la table
Le rôle d'accès est assigné à tout index unique ou avec doublons, la clé primaire réalise ce rôle car elle est par défaut un index unique.
L'index optimise le procéssus de recherche et d'accès aux enregisrements ciblés
La clé primaire n'est pas la seule à identifier d'une façon unique un enregistrement contrairement à ce qu'on peut penser, car elle ne peut empêcher malheureusement l'enregistrement d'au moins 2 lignes de données semblables ayant 2 clé primaires différentes.
Exemple: En enregistrant le même étudiant 2 fois avec 2 clés primaires différentes
Et pour palier à ce problème des indexes uniques doivent être mis en place sur d'autres champs pour garder l'unicité de l'enregistrement.
En conclusion, je peux dire que la clé primaire (base du modèle
relationnel) sert à nouer des relations avec les autres tables en représentant un enregistrement au plus de sa table.
En modifiant ou supprimant cette clé primaire on touche à l'intégrité de l'enregistrement et de ses relations.
Il faut donc prendre les précautions nécéssaires si on permet la modification et/ou la suppression de la clé primaire en activant les triggers de modification et/ou suppression en cascade.
Et noter bien, que le principe de clé primaire n'existe pas dans les modèles de données objets car pour ces derniers, une classe (objet table) est encapsulée (référencée) en entier l'ors d'une relation étrangère dans une autre classe.
ps: Je te conseille donc d'activer les triggers de cascade sur tes relations PK/FK pour autoriser l'Update et le Delete de PK sans efforts supplémentaires (si tu est sur une BD mysql de type innodb ou sur mssql, oracle, access et équivalent)