bonjour tout le monde, je veux changer le type d'un clé primaire de varchar a int j'ai chercher par tous mais toujours le même problème,
j'utilise comme serveur sql Wamp server
bonjour tout le monde, je veux changer le type d'un clé primaire de varchar a int j'ai chercher par tous mais toujours le même problème,
j'utilise comme serveur sql Wamp server
D’abord, on ne dit pas "le type de la clé primaire" ! La clé primaire est avant tout une contrainte (l’unique contrainte de clé primaire pour une table).
La clé primaire peut être composée d’une ou de plusieurs colonnes. Chacune des colonnes participant à la contrainte de clé primaire, (et également les autres colonnes ne participant pas à la clé primaire), est caractérisée par un type de données (VARCHAR, INT, DATETIME, etc..).
Donc, je suppose que ta question concerne le type de données d’une colonne participant à la contrainte de clé primaire. (peut-être même, l’unique colonne de la clé primaire), que tu souhaites changer de VARCHAR en INT
Généralement, pour modifier une contrainte de clé primaire (Primary key), il faut supprimer auparavant la contrainte de clé primaire existante, puis la créer à nouveau en précisant sa nouvelle définition.
Pour répondre à ta question, je te propose de procéder ainsi :
1 – Créer une nouvelle colonne de type INT (nommée par exemple NewID),
2 – Copier les données de la colonne, de type VARCHA, constituant la clé primaire (OldID), tout en les transformant en INT, vers la nouvelle colonne NewID de type INT, et ce, en utilisant la fonction CAST : SET NewID = CAST(OldID AS INT),
3 - Si la contrainte de clé primaire est référencée dans d’autres contraintes de clés étrangères (FK), il faudra, au préalable, dropper toutes autres clés étrangères (FK) référençant cette clé primaire,
4 – Dropper la contrainte de clé primaire (PK_xxx),
5 – S’assurer que les données copiées dans l’étape 2 sont OK, si c’est le cas, alors dropper l’ancienne colonne (OldID), de type VARCHAR, participant à l'ancienne clé primaire,
6 – Renommer la colonne nouvellement créée (NewID de type INT) avec le nom de l’ancienne clé primaire (OldID),
7 – Créer une nouvelle contrainte de clé primaire PK_xxx sur la colonne de type INT nouvellement créée et renommée (OldPK),
8 – Modifier le type de données des colonnes, des autres tables, impliquées dans les contraintes FK, puis recréer à nouveau les contraintes FK.
A+
"Une idée mal écrite est une idée fausse !"
http://hamid-mira.blogspot.com
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager