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