2012-10-22 5 views
1

Est-il possible d'ajouter une clé primaire dans une table ayant déjà un index non cluster unique?Index unique Sybase et clé primaire

J'ai une table cargo_car et j'ai besoin de définir cd_cargo_car comme PK.

J'ai essayé ceci:

ALTER TABLE dbo.cargo_car ADD PRIMARY KEY (cd_cargo_car) 

mais j'ai reçu l'erreur:

Error (1921) An index with the same columns inthe same order alredy exists onthe table 

Ce tableau a de nombreuses dépendances et lorsque je tente de supprimer l'index je reçois:

Error (3712) Cannot drop index 'cargo_car.XPKcargo_car' because it still has referential integrity constraints. 

Ceci est le script Créer:

CREATE TABLE dbo.cargo_car 
    (
    cd_cargo_car  SMALLINT NOT NULL, 
    nm_cargo_car  VARCHAR (40) NOT NULL, 
    cd_refini_car  CHAR (4) NOT NULL, 
    cd_reffin_car  CHAR (4) NOT NULL, 
    cd_jornada1_car CHAR (2) NOT NULL, 
    cd_jornada2_car CHAR (2) NOT NULL 

    ) 
GO 

CREATE UNIQUE NONCLUSTERED INDEX XPKcargo_car 
    ON dbo.cargo_car (cd_cargo_car) 
GO 

Suggestion sur comment faire ceci?

TKS

+4

Je pense que vous allez devoir supprimer toutes les contraintes de clé étrangère sur les autres tables, supprimer cet index, créer la clé primaire (je suppose que vous voulez il doit être mis en cluster?), puis recréer les contraintes de clé étrangère. – MatBailie

+0

Votre solution est parfaite J'ai dû supprimer l'index et toutes les références, créer le PK et recréer mes contraintes. Merci @Dems – meurer

Répondre

1

you're going to have to drop all the foreign key contraints on the other tables, drop that index, create the Primary Key (I guess you want it to be clustered?), then re-create the foreign key constraints. – Dems

Pour permettre la fermeture de cette question, je me suis converti ce commentaire à une réponse. Il est correct et similaire à ce que je voulais écrire ...