Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1331 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Eviter les doublons dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Eviter les doublons dans une table

n°2228603
ifr38
Posté le 21-05-2014 à 09:38:32  profilanswer
 

Bonjour,
 
J'ai un petit problème, j'espère trouver de l'aide ici.
 
J'ai deux bases, chacune sur un serveur. Ces deux bases sont identiques, mais il m'en faut 2 pour avoir de la redondance.  
J'ai créé un trigger qui permet, à chaque nouvelle ligne de ces tables, d'ajouter une ligne sur une table distante. Sauf que si je mets en marche les triggers sur mes deux tables, celui-ci va ajouter les mêmes lignes en doubles sur ma table distante.
 
Comment pourrais-je faire pour ne pas avoir de doublons sur ma table distante ?? Créer un autre trigger sur cette table distante en comparant si la ligne qu'on m'envoie n'existe pas déjà ??  
 
merci de votre aide :)

mood
Publicité
Posté le 21-05-2014 à 09:38:32  profilanswer
 

n°2228631
rufo
Pas me confondre avec Lycos!
Posté le 21-05-2014 à 11:25:06  profilanswer
 

Si t'es sous Mysql, y'a le mécanisme de réplication : http://dev.mysql.com/doc/refman/5. [...] ation.html
http://libresavoir.org/index.php?t [...] uration%29
 
Ce mécanisme existe d'ailleurs sur d'autres SGBD ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228652
gpl73
Posté le 21-05-2014 à 12:18:10  profilanswer
 

Il faut savoir ce que l'on veut faire en fait :)
2 solutions "manuelles":
Ne pas activer les triggers sur la base distante (aussi simple que ça):
ta base de réplication est "passive",
et tu copies "tout" via tes triggers de toutes tes tables de la base "prod" et ta base de back-up ne fait rien...
 
Soit tu laisses en place tes triggers sur la base de réplication , et ta base de  back up est "attive":
tu ne fais répliquer que les données "entrées et/ou modifiées" des tables "maitres"... ainsi les triggers de ta base de back up "embarquent" comme ceux de la prod.
Ceci implique par contre que si tu fais une modif sur un trigger en prod...tu fasses la même en back-up...
 
3eme solution : lire la doc de rufo lol
 
Guillaume


Message édité par gpl73 le 21-05-2014 à 12:21:16

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228659
ifr38
Posté le 21-05-2014 à 12:38:23  profilanswer
 

Salut à tous,
 
J'ai "bidouillé" autrement.. Je garde mes triggers sur mes deux tables, en remplaçant INSERT INTO par INSERT IGNORE INTO comme requêtes.. Et du coté de ma table distante, j'ai crée une contrainte d'unicité. Ainsi, si cette contrainte d'unicité est violée, l'insertion est ignorée ;)  

n°2228666
rufo
Pas me confondre avec Lycos!
Posté le 21-05-2014 à 13:24:45  profilanswer
 

Et pour les updates et delete, tu fais comment ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228676
ifr38
Posté le 21-05-2014 à 13:50:46  profilanswer
 

Je ne fais jamais de delete dans ce trigger, et pour les dupdates je fais un test préalable pour savoir si ça déjà été mise à jour :)
 

n°2228678
gpl73
Posté le 21-05-2014 à 14:00:26  profilanswer
 

:jap:  
Tu as raison ifr38 !
C'est de la bidouille  
:D


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2228681
ifr38
Posté le 21-05-2014 à 14:10:50  profilanswer
 

oui,
mais ça marche pas encore .. :cry: :cry:

n°2228692
rufo
Pas me confondre avec Lycos!
Posté le 21-05-2014 à 14:49:47  profilanswer
 

Et si t'arrêtais de bidouiller et que tu te mettais à utiliser les outils proposés par ton SGBD ? :whistle:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2228707
ifr38
Posté le 21-05-2014 à 15:34:22  profilanswer
 

Finalement mon bidouillage fonctionne à merveille :ange:

mood
Publicité
Posté le 21-05-2014 à 15:34:22  profilanswer
 

n°2228722
flo850
moi je
Posté le 21-05-2014 à 15:53:20  profilanswer
 

et le jour ou ton second serveur (ou le lien entre ces serveurs) tombe, tes triggers planteront et tu ne pourras plus rien faire dans ta base 1  
 
niveau perfs : tu as un allé retour réseau pour aller écrire dans le serveur 2 avant de valider chaque écriture dans serveur 1
 
Si jamais il se passe quel que chose entre la fin de l'exécution du trigger ( écriture dans la base 2) et l'écriture dans la base 1, gener u nautre trigger de 1 qui interdit l'ecriture  : tes bases sont désynchronisées
 
bref, que du bonheur


Message édité par flo850 le 21-05-2014 à 15:53:48

---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Eviter les doublons dans une table

 

Sujets relatifs
Executer un script si nouvelle ligne dans une table MySQLproblème pour inserer des données dans une table à partir d'un Jframe
aide exploitation table de donneesRequête SQL basée sur paramètre et table un peu étrange
Importer des données d'une table importée à une autre tableProblème de doublons
Pervasive SQL Mettre a jour une Table[Oracle]Taille d'une table étrange, pas de droits DBA.
[POSTGRESQL] Table non défini[MySQL] Eviter les doublons dans une table ?
Plus de sujets relatifs à : Eviter les doublons dans une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR