/Le 14/02/2012 23:17, Bernard Ribot a écrit :/
/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 /
Houlà, bon : alors je revoie ma copie :
- Pour empêcher les doublons sur un champ d'une table (lors de la
saisie), il faut utiliser, la formule suivante (en l'adaptant à vos
appellations locales) :
*ALTER TABLE t_pays ADD CONSTRAINT anti_doublon UNIQUE (ClairPays)*
- Pour annuler la "contrainte" anti-doublons ci-dessus, ce serait :
*ALTER TABLE t_pays DROP KEY anti_doublons*
- Pour lister les doublons a posteriori (au cas où des petits malins
auraient réussi à passer au travers ;-) ) :
faire une requête contenant cette formule SQL :
*SELECT t_pays.IDPays, t_pays.ClairPays, COUNT(*) FROM t_pays GROUP BY
t_pays.ClairPays
HAVING COUNT(*) > 1*
/_NB_ : trois formules testées et certifiées en état de marche par votre
serviteur, sous LibreOffice 3.5.0rc3 /
Et enfin, une fois qu'on les noms de ceux qui font les c...
il suffit de leur porter le coup de grâce, à l'aide du dernier alinea du
post de Bernard (voir plus haut). Et encore merci à lui pour son
incroyable patience.
--
------------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@fr.openoffice.org
For additional commands, e-mail: sy...@fr.openoffice.org with Subject: help