Eviter les doublons dans une table - SQL/NoSQL - Programmation
Marsh Posté le 21-05-2014 à 11:25:06
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
Marsh Posté le 21-05-2014 à 12:18:10
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
Marsh Posté le 21-05-2014 à 12:38:23
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
Marsh Posté le 21-05-2014 à 13:24:45
Et pour les updates et delete, tu fais comment ?
Marsh Posté le 21-05-2014 à 13:50:46
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
Marsh Posté le 21-05-2014 à 14:00:26
Tu as raison ifr38 !
C'est de la bidouille
Marsh Posté le 21-05-2014 à 14:49:47
Et si t'arrêtais de bidouiller et que tu te mettais à utiliser les outils proposés par ton SGBD ?
Marsh Posté le 21-05-2014 à 15:53:20
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
Marsh Posté le 21-05-2014 à 09:38:32
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