Le 14/02/2012 21:41, Lucien RUBEMPRE a écrit :
Pour détecter les doublons d'une table (lors de la saisie), il faut utiliser la formule suivante :
*ALTER TABLE t_pays ALTER COLUMN ClairPays UNIQUE KEY `ClairPays` (`ClairPays`)*
Non, j'avais rectifié. C'est :
ALTER TABLE t_pays ADD CONSTRAINT  nom_contrainte  UNIQUE (ClairPays);

Pour détecter tous les doublons a posteriori, il faut utiliser :
*ALTER TABLE t_pays DROP CONSTRAINT 'ClairPays' (ClairPays')*
Non, ça, c'est pour supprimer la contrainte UNIQUE KEY ajoutée sur le champ ClairPays pour éviter la création de doublons sur ce champ. La syntaxe exacte est : ALTER TABLE t_pays DROP KEY nom_contrainte;

Pour les repérer à posterio c'est ça :
SELECT t_pays.IDPays, t_pays.ClairPays, COUNT(*) FROM t_pays GROUP BY t_pays.ClairPays
HAVING COUNT(*) > 1;

On peut même les supprimer automatiquement avec cette séquence de commandes à exécuter l'une après l'autre : CREATE TEMPORARY TABLE table_temp SELECT idpays FROM t_pays GROUP BY ClairPays;
ALTER TABLE table_temp ADD UNIQUE (idpays);
DELETE FROM t_pays WHERE idpays NOT IN (SELECT idpays FROM table_temp);
DROP TEMPORARY TABLE table_temp;
OPTIMIZE TABLE t_pays;
Ce n'est pas de moi mais je l'ai testée sur une de mes tables : ça fonctionne.

Bernard

--

Bernard Ribot
LibreOffice.org 3.5.0rc3 / Windows 7 SP1
LibreOffice.org 3.3.4 / Windows XP SP3
--
------------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: sy...@fr.openoffice.org with Subject: help

Répondre à