Ajout et suppression d'un seul coup

exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008 - 10 avril 2006 à 14:18
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 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.

j'espere avoir été clair... ;op

merci

(sql server 2000)

exyacc

15 réponses

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
10 avril 2006 à 15:02
A moins de retirer les contraintes, c'est impossible.

Pourquoi pas d'update, si on peut demander ? :o)
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 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 ...?

exyacc
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
10 avril 2006 à 18:51
Non, c'est le pourquoi d'une contrainte, elle te contraint a un certain respect... Si ton truc plante tu retrouves comment tes modifs ? :o)

Pour SQL Server 2005, il doit exister un outil de synchronisation via les fichiers logs...
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 juillet 2008
11 avril 2006 à 09:05
j'ai pas le choix je dois utiliser sql server 2000.... :(

exyacc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
11 avril 2006 à 09:10
oups, j'avais lu 2005... 2000 doit aussi possèder un outil de synchro...
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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. :)
0
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
14 avril 2006 à 13:54
Allo ?
Ca semble possible... Si ca t'interesse poste ici, je t'en parlerais :o)
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 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.... :(

exyacc
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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.
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 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

exyacc
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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 ?
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 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
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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 !
0
exyacc Messages postés 163 Date d'inscription dimanche 20 octobre 2002 Statut Membre Dernière intervention 31 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
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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
0
Rejoignez-nous