exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008
-
10 avril 2006 à 14:18
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 2011
-
21 avril 2006 à 10:05
salut,
voila mon pb.. j'ai 2 tables A et B, B a une dependance avec A. je voudrais mettre a jour une donnee de B mais sans passer par un update, juste en faisant un delete puis un add, mais le pb, a cause de la dependance, je peux pas supprimer ds B sans supprimer dans A....
donc voila ma question, est ce qu'il y a moyen de supprimer ds B puis ajouter dans B, et qu'il valide une fois les 2 faits ? car une fois les 2 faits les dependances sont bonnes ainsi que les contraintes, etc.
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 10 avril 2006 à 15:13
en fait, c'est pour faire une sorte de synchro entre 2 bases, je vais utiliser des triggers qui stockeront les modifs ds des tables, j'ai lu qu'on pouvait recuperer les suppressions et les ajouts ds des tables temporaires, et qu'en fait, un update etait une suppression puis un ajout.... donc ds mes tables je vais avoir que des supp et des ajouts.... ;op
les contraintes, on est obliger de les supprimer puis de les recreer ? on peut pas "juste" desactiver un moment ...?
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 11 avril 2006 à 16:53
oui tu as des outils de synchro sous SQL 2000
3 types de synchros meme, tu devrais pouvoir trouver ton bonheur, et sans vouloir remettre en cause tes qualités de développeur, je pense que ca sera bcp plus performant. :)
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 14 avril 2006 à 15:19
je crois pas qu'une synchro puisse marcher, helas....
car j'ai pas une connexion permanentes entre les 2 serveurs, en fait le bureau se connecte de tps en tps pour "rapatrier" les données et les mettre a jours, j'utilise pcanywhere pour transferer les données, s'il y avait eu l'adsl, j'aurais pu faire un vpn, puis synchro mais pas le cas.... :(
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 18 avril 2006 à 17:11
tu as également la possibité de faire une synchronisation a un moment donné.
ca sera le encore plus performant que la création de scripts.
car la je ne sais pas comment tu compte t'y prendre, mais si tu veux enregistrer chaque modif dans ta base d'origine pour les rejouer dans ta base cible... éh ben... bon courage.
je pense que tu es parti dans la mauvaise direction.
expose clairement ce que tu veux faire, ainsi que tes contraintes et ton environnement, on pourra peut etre te donner une solution plus adaptée.
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 18 avril 2006 à 17:38
clairement: ;op
disons qu'il y a un poste dans un lieu qu'on va appeller TRAVAIL et un lieu B qu'on va appeler BUREAU
sur les 2 lieux j'ai msde + un logiciel de gestion.
les 2 lieux disposent de modem RTC et de pcanywhere., le modem de TRAVAIL est en "attente" le soir..
le programme de gestion ne m'appartient pas, donc j'ai access aux base mais je peux malheureusement pas modifier la structure de la base.
j'aimerai essayer de faire une sorte de synchro pour que BUREAU puisse consulter et modifier les donnees de TRAVAIL.
Pour l'instant voila comment je procede.
a la fin de la journée au TRAVAIL, un programme copie les donnees dans une base temporaire (pour pourvoir extraire certaines tables suivant un critere de DATE, car l base peut devenir beaucoup trop grande pour du modem RTC...), puis je fais un backup de la base temporaire, puis je zip pour obtenir BACKUP.zip
le BUREAU se connecte via pcanywhere pour rapatrier BACKUP.zip, je restaure la base dans une table temporaire, puis je mets a jour la base de BUREAU en faisant requetes suppression, ajout, etc....
et la je reflechie pour pourvoir renvoyer les données, car BUREAU puet renvoyer les donnees pls jours apres alors que TRAVAIL continue a...travailleR... ;op
j'espere avoir été clair.....
merci de passer du tps sur mon pb ... :op
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 19 avril 2006 à 10:00
donc si je comprend bien, tu peux avoir des modifications dans les deux bases en meme temps, et apres tu veux les synchroniser c'est bien ca ?
dans ce cas... heu... oui la c'est un peu plus compliqué.
si une de tes bases ne servait que de publication et n'etait pas modifiée, ca serait beaucoup plus simple.
mais dans ce cas j'ai une question :
comment feras-tu quand tu aura une données qui aura été modifiée dans les deux bases. laquelle garde tu ?
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 19 avril 2006 à 10:05
oui une synchro; en sachant, qu'au BUREAU ce sont plus des modifs que des ajouts....
le BUREAU est censé faire des corrections, donc pour tous les enregistrements identiques, c'est le BUREAU qui "gagne"...
pourquoi ils ont pas fait ds ms-sql un truc omme access ou on pouvait faire une synchro, et ca marchait pas trop mal, ca pouvait meme gerer les conflits...
exyacc
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 20 avril 2006 à 17:59
bon oui la effectivement, je pense que les synchro dispo dans SQL server ne pourront pas resoudre ton probleme
alors j'en reviens a une question posée plus haut, pourquoi ne veux tu pas utiliser d'update, ca serai plus simple qu'une suppression et un ajout.
sinon il faut que tu supprimer d'abord dans la table A, puis dans la table B, puis reinserer dans la table A, enfin reinserer dans la table B.
sinon tu peux effectivement supprimer ta contrainte et la recréer apres, mais cela risqu d'etre tres long car quand tu va la recreer, le systeme va verifier que les données existantes repondent bien a la contrainte (tu as une option pour eviter ca je crois, mais ca n'est pas recommandé)
donc, pourquoi pas d'update ? je pense que c'est vraiment le plus simple dans ton cas, et c'est fait pour !
exyacc
Messages postés163Date d'inscriptiondimanche 20 octobre 2002StatutMembreDernière intervention31 juillet 2008 20 avril 2006 à 18:06
pas d'update, acr pour renvoyer les donnes, j'ai pensé mettre des triggers sur chaque tables pour stocker les données modifiées, effacées, ajoutés, or les triggers recuperes les modifs que ds 2 tables, inserted et deleted..... en fait qd y'a un update
sql supprime et ajoute la transaction...don moi qd je vais remettre les données j'ai que des suppression et des ajouts...
exyacc
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 21 avril 2006 à 10:05
alors je suppose que tu te base sur une clef pour mettre a jour le bon champs.
dans ce cas la solution que je vois, c'est de procéder en plusieurs etapes :
1 - update des lignes dont la clef est dans la table deleted ET dans la table inserted, puis suppression de ces lignes dans les tables deleted et inserted
2 - suppression dans la base à mettre a jour des lignes dont la clef est dans la table deleted
3 - ajout dans la base des lignes dont la clef est dans la table inserted
j'espere que tu vois ce que je veux dire, c'est clair dans ma tete, mais sur mon clavier ca l'est peut etre moins :) . le but c'est de reperer les champs qui n'ont pas été juste supprimés mais mis à jour en verifiant si ils ont été réinseres apres leur suppression, donc qui sont dans la table deleted et dans la table inserted
ca doit pas etre tres compliqué a mettre en oeuvre, tu dois pouvoir faire ca en quelques requetes assez simples