2013-05-30 2 views
0

Je souhaite modifier la clé primaire de la table, d'abord il était id, maintenant je veux changer à useridComment changer la clé primaire de la table

smsusers(id,fname,lname,userid) 

ici id est de type varchar adn userid est de type int

pour ce que je suis en train requête suivante

ALTER TABLE smsusers DROP PRIMARY KEY 

qui montre cette erreur

#1025 - Error on rename of '.\xrcwrn_sms\#sql-ae0_6f' to 
'.\xrcwrn_sms\smsusers' (errno: 150) 

id de smsusers est associée à de nombreuses tables en tant que clé étrangère.

Comment changer la clé primaire.

Répondre

1

Le message vous indique que vous ne pouvez pas encore supprimer la clé primaire car elle est référencée par une ou plusieurs clés étrangères. Vous devez d'abord identifier et supprimer les clés étrangères, puis supprimer la clé primaire.

1

ERREUR NO: 150 signifie Problème de définition de clé étrangère. Je pense que certaines autres tables ont une contrainte de clé étrangère en fonction de ce PK, vous devez donc le supprimer en premier et le reconstruire plus tard.

1

Voici un exemple:

ALTER TABLE `database`.`table` 
    DROP PRIMARY KEY, 
    ADD PRIMARY KEY (`userid`); 
0

J'ai essayé link. Cela fonctionne correctement. Mes étapes sont

CREATE INDEX id_pk_unique ON smsusers (id) 
ALTER TABLE parent DROP PRIMARY KEY; 
ALTER TABLE parent ADD PRIMARY KEY (userid); 
Questions connexes