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

Oracle Discussion :

ligne de commande SQL


Sujet :

Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Par défaut ligne de commande SQL
    bonjour

    j'ai un petit problème concernant la base de données sur laquelle je travail, j'explique pour ceux qui veulent bien m'aider:

    mon schéma est créé sous une bade données Oracle 9i R2, j'ai transférer des données dans différents tables, jusque la il n'y a pas de problèmes. mon problème est que je voudrai modifier une valeur d'une clé primaire d'une tables qui est lie a d'autre tables du schéma c-a-d que je voudrai que lorsque je modifier dans une tables une valeur cette modification se répercute sur toutes les tables du schéma qui utilisent cette valeur.

    est ce que quelqu'un connait une commande en SQL qui permet de faire cette opération!!!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Mise à jour de PK => mauvais design.

    Certains SGBD implémentent l'option ON UPDATE CASCADE sur les clefs étrangères, mais pas Oracle.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Par défaut
    sa sous entend que c'est mort, la galère.
    avec des UPDATE ce n'est pas possible???
    sinon donnez moi une méthode sous Oracle ( commande SQL) pour modifier en même temps la même valeur d'un champ de différentes tables, c'est possible cette manipulation?

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Dans votre table de référence vos ajoutez votre nouvelle valeur en fonction de l'ancienne, vous mettez à jour vos tables annexes et vous supprimez votre ancienne valeur :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    create table t1
    (
        c1   varchar2(2) primary key
    );
     
    create table t2
    (
        c2   varchar2(2) primary key,
        c1   varchar2(2),
        constraint fk_t2_t1
          foreign key (c1)
          references t1(c1)
    );
     
    insert into t1 values ('AA');
    insert into t2 values ('AA', 'AA');
     
    commit;
     
    insert into t1
    select 'BB'
      from t1
     where c1 = 'AA';
     
    update t2
       set c1 = 'BB'
     where c1 = 'AA';
     
    delete from t1
     where c1 = 'AA';

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par patrick_31000 Voir le message
    ...une méthode sous Oracle ( commande SQL) pour modifier en même temps la même valeur d'un champ de différentes tables, c'est possible cette manipulation?
    Mais, vous n'est pas obligé de modifier en même temps la valeur d'un champ dans tous les tables!

  6. #6
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Voici une solution pour générer des procedures stockées qui font l'update cascade:
    http://tkyte.blogspot.com/2009/10/ht...tecascade.html
    Cordialement,
    Franck.

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par pachot Voir le message
    Bonjour,
    Voici une solution pour générer des procedures stockées qui font l'update cascade:
    http://tkyte.blogspot.com/2009/10/ht...tecascade.html
    Cordialement,
    Franck.
    C'est un vieux truc Franck. Bon si tu a une base 7 ou 8 peut être.

  8. #8
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mnitu Voir le message
    C'est un vieux truc Franck. Bon si tu a une base 7 ou 8 peut être.
    Un vieux truc... toujours conseillé par Tom Kyte en 2009 ?
    Et que propose-tu de mieux en 11gR2 ?

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    A l'époque où Tom Kyte a écrit ce truc, Oracle 7, il était impossible de modifier la clé primaire si des contraints actives de type clé étrangères existait sur des autres tables. Il fallait soit désactiver les contraints, soit utiliser les triggers comme il la fait, soit jouer avec les valeurs de la clé primaire ou autre bricolage ingénieux.
    Mais en Oracle 9 déjà il est possible de déclarer les contraints à l'état defferable.

    Bon maintenant si il s'agit d'une situation occasionnelle, utiliser l'utilitaire en question c'est une solution. Si il faut trouver une solution rapide pour résoudre ce problème en temsp de crise, pareil. Mais si c'est un problème récurrent je ne l'utiliserait pas.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Par défaut
    bonjour

    merci pour l'intérêt que vous donnez a mon problème, vos solution sont un tous petit peut compliqué vu que je suis débutant dans le domaine néanmoins je vais essayer d' applique ce que vous me conseillez et je vous met au courant

    merci

  11. #11
    Membre averti
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2009
    Messages : 27
    Par défaut
    bonjour

    finalement j'ai utiliser la méthode manuelle, j'ai modifié toutes les tables manuellement
    merci pour l'aide comme même

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

Discussions similaires

  1. [10g] Authentification via ligne de commande SQL
    Par sonia5 dans le forum Connexions aux bases de données
    Réponses: 5
    Dernier message: 06/03/2014, 10h24
  2. Réponses: 4
    Dernier message: 01/02/2006, 19h44
  3. [SQL*Plus] Lancer un script en ligne de commandes
    Par Jibees dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/07/2005, 17h05
  4. [SQL*Plus] Lancer un script en ligne de commandes
    Par Jibees dans le forum Oracle
    Réponses: 6
    Dernier message: 04/07/2005, 15h31
  5. sql en ligne de commande
    Par meufeu dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/04/2005, 13h39

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