Lors de l'ajout de la clé primaire sur PARAMS, impossible de définir la contrainte primary key

0000002709     -      29/06/2017

Lors de la vérification de structure (Outils avancés), Mercator peut demander d'installer une clé primaire manquante sur PARAMS. Il propose alors ce script SQL : 

ALTER TABLE [dbo].[PARAMS] 
    ADD CONSTRAINT [PARAMS_id] PRIMARY KEY CLUSTERED (TYPE) 
    WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF)

L'erreur suivante peut être rencontrée :

Error number : 1505
Impossible de définir la contrainte PRIMARY KEY dans une colonne de la table 'PARAMS' contenant une clé dupliquée. Impossible de créer la contrainte.

Dans ce cas, il faut exécuter au préalable cette commande SQL : 

select type,min(valeur) as valeur into #params_tmp from params group by type
delete from params insert into params(type,valeur) select type,valeur from #params_tmp 
drop table #params_tmp

 

Mots clés : create unique index, duplicate key, vérifier structure

 



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)