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

SQL Oracle Discussion :

Modifications apportées sur une table alimentée par une vue matérialisée


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Modifications apportées sur une table alimentée par une vue matérialisée
    Bonjour à tous,

    j'ai un grand blocage depuis quelques jours

    En faite j'ai une vue matérialisée raffraichie en mode "Complete " sous oracle 12C. (Impossible de faire un refresh fast car la requête est complexe)

    Cette vue alimente une table en mode Insert en fonction d'un id.

    Le problème est que :

    - quand il y a une nouvelle insertion dans la vue, ma table est bien mise à jour
    - par contre quand il y a un update sur la vue, ma table n'est pas à jour car je ne sais pas les lignes qui sont mises à jour dans la vue (à cause du Refresh Complete).

    Pourriez-vous SVP, m'aider à récupérer les lignes dans le cas d'un update ?

    D'avance merci.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Peut être avec MERGE

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Peut être avec MERGE
    Pourriez-vous développer votre réponse SVP ? MERCI

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Ben MERGE permet de faire un INSERT dans la table de destination quand les lignes n'existent pas ou un UPDATE quand elles existent.
    C'est une proposition, lisez les exemples fournis dans le lien pour voir si ça correspond à votre besoin.

    Sinon expliquez plus en détail ce qui vous bloque.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Ben MERGE permet de faire un INSERT dans la table de destination quand les lignes n'existent pas ou un UPDATE quand elles existent.
    C'est une proposition, lisez les exemples fournis dans le lien pour voir si ça correspond à votre besoin.

    Sinon expliquez plus en détail ce qui vous bloque.
    Merci pour votre réponse. J'ai utilisé Merge et j'ai découvert un autre problème.

    En faite dans ma table de destination, j'ai deux dates :

    - Date_Création : remplie en cas d'insertion d'une nouvelle ligne dans la table
    - Date_Modif : modifié en cas d'une mise à jour d'une ligne de la table.

    Quand j'utilise Merge, Il met à jour toutes les date_Modif à la date du jour même si il n' y a pas une modif sur la ligne ( car Merge met à jour toutes les lignes)

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    MERGE INTO Table_MVENTE TMV
    USING (
    SELECT 
       TE.IDVENTE,
       TE.NOM,
       TE.MONTANT,
       TE.PRODUCTNAME
    FROM MVENTE TE
    )SRC
    ON (TMV.IDVENTE = SRC.IDVENTE)
     
    WHEN MATCHED THEN UPDATE SET
         TMV.NOM = SRC.NOM,
         TMV.MONTANT =  SRC.MONTANT,
         TMV.PRODUCTNAME = SRC.PRODUCTNAME,
         TMV.Date_Modif = SYSDATE
    Résultat

    Nom : Capture.PNG
Affichages : 212
Taille : 9,0 Ko

    Donc il faut vraiment détecter les lignes qui sont modifiées dans la vue, mais comme c'est un mode de refresh Complète, c'est compliqué

Discussions similaires

  1. Recherche Like sur une table alimenté par une autre
    Par damze00 dans le forum Langage SQL
    Réponses: 0
    Dernier message: 02/10/2014, 19h30
  2. [WD15] TableEnregistre sur une table remplit par une requête
    Par tux59 dans le forum WinDev
    Réponses: 4
    Dernier message: 04/07/2010, 16h20
  3. requete sur une table rempli par menu déroulant
    Par tony3 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2009, 10h01
  4. Historisation des modifications effectuées sur une table SQL
    Par Drooxy dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2007, 13h29
  5. Réponses: 4
    Dernier message: 24/07/2007, 12h12

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