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

PL/SQL Oracle Discussion :

Automatiser la mise à jour


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut Automatiser la mise à jour
    Salut,

    j'ai 2 tables A et B, je veux pouvoir mettre à jour un champs de la table A à l'aide de la table B.

    la requete est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select from B into A where b.value=a.value
    je veux automatiser cette procédure que parés chaque insertion dans la table A la mise à jour se fait automatiquement.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    slt

    copie-colle ton code après chaque code d'insertion dans A

    a+

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Votre demande n'est pas très claire.

    Vous souhaitez lorsque vous faites un INSERT and A que un des champs de A soit mis à jour avec la valeur présente dans B en fonction d'une valeur d'un autre champs de A ?

    La requête que vous mettez en exemple ne correspond pas du tout : elle consiste à renvoyer les valeur de la table B dans une VARIABLE de nom A, sauf que le WHERE n'aurait pas de sens dans ce cas.

    Pour faire ce que voulez le mieux est sans doute de créer un TRIGGER Before INSERT sur la table A (en vérifiant que cette mise à jour est logique : si les valeurs qui existe dans B sont stables dans le temps, on ne voit pas l'interêt de créer une redondance d'info dans A - si elles varient dans le temps, c'est différent).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Oui exactement, l'inérêt est de remplir les cellules vides dans la table A.
    je fait un import dans la table A, toute les semaine. La table B est stable et sert juste à remplir les celleules non renseigné que j'ai dans la table A.

    Un triggers!!

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Voici le trigger que je créé, mais il contient des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create or replace TRIGGER UPDATE_CLARIFY
    AFTER INSERT ON Client
    BEGIN
    declare desc_val varchar2 (80);
    Select code_client into Client from correction
    Where nom=desc_val
    END;

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Il faudrait déjà commencer par aller lire un tutoriel sur la syntaxe SQL de base avant d'aller plus loin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom_colonne INTO nom_table
    n'a absolument aucun sens.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    http://www.w3schools.com/sql/sql_select_into.asp

    c'est une requête qui existe dans SQL le select into, je l'ai trouvé dans pas mal de forum et je l'ai utilisé, ça marche!

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui mais vous faites de l'Oracle, le minimum serait d'aller lire la documentation Oracle, qui a le mérite d'être extrêmement complète.
    Chaque SGBD possède ses syntaxes propres, même s'il existe un socle commun défini par la norme.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par kensem Voir le message
    http://www.w3schools.com/sql/sql_select_into.asp

    c'est une requête qui existe dans SQL le select into, je l'ai trouvé dans pas mal de forum et je l'ai utilisé, ça marche!
    le SELECT INTO est tout à fait standard, mais le SELECT xx INTO [UNE_TABLE] n'est pas du tout supporté par tous les SGBD. Et en l'occurence, par Oracle il ne n'est pas.

    Pour insérer dans une table à partir d'une autre,la syntaxe de base est :

    insert into [laTable] select (leschamps) from [tableOrigine].

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  10. #10
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Non, vous vous trompez.
    L'équivalent de SELECT INTO <UneTable> c'est CREATE TABLE <UneTable> AS.

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Non, vous vous trompez.
    L'équivalent de SELECT INTO <UneTable> c'est CREATE TABLE <UneTable> AS.
    Ce qui crée la structure de la table.

    Pour juste faire la copie des données d'une table vers une autre existante, je maintiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO <Table> Select <champs> from <autreTable>
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create table t_test_1
    (
    col1 varchar2(100)
    );
     
    create table t_test_2
    (
    col1 varchar2(100)
    );
     
    insert into t_test_1 values ('AAAAAAAAAA');
    insert into t_test_2 select col1 from t_test_1;

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    merci pour votre réponse, j'ai jamais travaillé avec des triggers et j'ai besoin de votre aide encore une fois:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE
    TRIGGER UPDATE_Client
    AFTER INSERT ON Client
    BEGIN
    declare desc_comp varchar2 (80);
    Insert into Client select nom from correction
    Where Client.codeclient=correction.codeclien /*Cette ligne est incorrecte, mais je veux mettre à jour le nom dans la table Client à partir de la table correction dans le cas ou le codeclient est le même dans les deux tables */
    END;

  13. #13
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Je pense que c'est plutôt ca que vous voulez faire :

    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
    17
    18
    19
    CREATE OR REPLACE
    TRIGGER UPDATE_Client
    BEFORE  INSERT ON Client
    for each row
    
    declare 
       var_nom_correction client.nom%type;
    
    BEGIN
    
      select nom 
        into var_nom_correction
            from correction
        where 
           :new.codeclient = correction.codeclient;
    
    :new.nom := var_nom_correction;
    
    END;

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 237
    Points : 83
    Points
    83
    Par défaut
    Merci, Super

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] VBA pour automatiser la mise à jour d'un tableau
    Par gdmeunier dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/06/2011, 17h42
  2. [Développement] automatiser la mise à jour d'un serveur distant
    Par iamFunky dans le forum AppleScript
    Réponses: 3
    Dernier message: 05/02/2011, 22h39
  3. Réponses: 8
    Dernier message: 09/05/2010, 18h50
  4. Automatiser la mise à jour de drivers.
    Par Radio_8 dans le forum Windows XP
    Réponses: 5
    Dernier message: 02/08/2007, 12h36
  5. Automatiser la mise à jour de la bD SQL SERVER from Access
    Par Nadaa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/11/2003, 15h23

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