IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

MAJ table Ref a partir d'une table temporaire


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 15
    Points : 13
    Points
    13
    Par défaut MAJ table Ref a partir d'une table temporaire
    Bonjour a tous, j'ai le besoin suivant et j'ai besoin d'aide.

    Je travaille sur une interface qui met a jour des textes dans le progiciel SAP.
    Le point de départ de l'interface est un fichier plat qui contient environ 10000 lignes. Chaque ligne contient les clefs me permmant de connaitre le texte SAP associé ainsi que le texte lui meme.

    J'ai une plateforme EAI entre les 2 (WebMEthods) qui possede sa propre Base de données SQL server.

    L'application qui emet le fichier fonctionne en Annuler Remplace et me renvoie donc chaque jour l'intégralité des 10000 lignes.

    Pour éviter de mettre a jour les 10000 textes chaque jour sachant que tres peu vont étre modifiés en une journée, je souhaite mettre en place dans la BD de WebMEthods, une table contenant les clefs, le texte et la date de mise a jour afin de n'envoyer a SAP, chaque jour que les entrées modifiées.

    J'ai pensé à créer 2 tables : La table Ref qui contient les données réelles avec la date de dernière mise a jour et une table Temp qui contiendra les données du fichier à son arrivée.

    Comment faire pour MAJ la table de Ref a partir de la table Temp sachant que : (on compare les clefs evidemment)
    - les entrées de Temp qui ne sont pas dans Ref doivent être ajoutées avec une date de mise a jour = GetDate()
    - les entrées de Ref qui ne sont pas dans Temp doivent être supprimées (ou flag de suppression + date du jour)
    - les entrées qui sont dans les 2 fichiers doivent être mis a jour au niveau du texte, de la date de mise a jour et eventuellement au niveau du flag de suppression si il y en a un !

    Merci pour vos eventuels apports.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    dans ce cas précis bien connu sur les interfaces de gros erp j'utilise 3 champs dans la table temporaire

    1 champ Date_create (valeur par défaut=getdate())
    1 champ Date_update
    1 champ Date_delete

    création trigger en update qui positionne Date_update avec getdate() lorsque
    Updated(champxxx)=1

    fonctionnement:

    lorsque tu loades pour la 1° fois un enregistrement tu as
    Date_create =getdate()
    Date_update=null
    Date_delete=null

    lorsque tu loades pour la x° fois un enregistrement tu as
    Date_create = inchangé
    Date_update= getdate() si update effectué, null si pas d'update
    Date_delete=null

    ensuite tu fais un update
    update #tmp set date_delete=getdate() where
    isnull(date_delete,0)=0 and datediff(day,isnull(date_update,0),getdate()) > 1 and datediff(day,isnull(date_create,0),getdate()) > 1

    c'est a dire que tu positionnes le flag delete pour tous les enregistrements qui n'ont pas été updatés (qui ne sont plus dans le fichier) aujourd'hui et qui n'ont pas été créés aujourd'hui

    il ne te reste plus qu'a transférer les champs qui ont date_delete a null

    ensuite tu repasses date_delete=null pour tous les enregistrements pour le chargement de demain...

    A+
    serge

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2011, 11h22
  2. affiché le contenu d'une table de BD à partir d'une ArrayList<String[]>
    Par dearraed dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 28/03/2010, 04h38
  3. Réponses: 3
    Dernier message: 18/04/2008, 14h28
  4. Réponses: 4
    Dernier message: 01/06/2007, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo