Salut,
Voici mon problème,
j'ai une table en source qui contient des lignes de facture :
table ligneFact
idfact numlignef ..
1 1
1 2
1 4
2 1
2 2
2 3
et une table en target sur un format presque identique (meme clés
table ligneFactFinal
idefactf numligneff
1 1
1 2
1 3
2 1
2 2
2 3
Je ne peux pas tronquer la table en target.
ce que je dois faire est d'insérer les lignes de la source à la target
en respectant la règle que si une ligne existe en target et plus en source, je dois la supprimer
ex la ligne 1 3
et mettre à jour les autres lignes
au final dans la target je devrais avoir, a même chose qu'en source
c'est à dire la ligne 1 4 en moins.
je pensai à faire d'abord une jointure externe en target et source
pour avoir les lignes qui sont en target et plus en source et ensuite les supprimé.
puis mettre à jour les autres lignes.
ce qui me dérange,
c'est que je fais
delete from matarget where (idefactf, numligneff) in
( select idefactf ,numligneff) from masource right outer join matarget...)
et ce qui me gêne est je fais un delete sur une table que je suis en train de lire (la target)
et que je fais un IN. de souvenir le IN c'est pas très optimal.
je comptais faire un exists
qu'en pensé vous?
avez-vous des conseil pour que ce soit optimal ?
merci