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

Administration Oracle Discussion :

savoir les clés primaires d'une table


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut savoir les clés primaires d'une table
    Bonjour à tout,

    j'ai besoin de faire qlques modifications sur le(s) clé(s) primaire(s) d'une table par exemle le(s) modifié(s) ou meme le(s) supprimé(s) meme si la table est référencée par d'autre table.
    est-ce-que qelqu'un peut m'aider?

    merci.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    cascade?

    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
     
    SQL> alter table jobcode drop primary key;
    alter table jobcode drop primary key
    *
    ERROR at line 1:
    ORA-02273: this unique/primary key is referenced by some foreign keys
     
     
    SQL> alter table jobcode drop primary key cascade;
     
    Table altered.
     
    SQL> alter table jobcode add primary key (creator);
     
    Table altered.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    je veux pas supprimer la clé primaire d'une table et la remplacée par d'autre mais je veux modifier la valeur de la clé primaire d'un enregistrement ou bien supprimer un enregistrement meme s'il est réferencé par d'autres enregistrements.Donc j'ai besoin de récupérer les colonnes clés d'une table en question pour pouvoir modifier ces valeurs ou supprimer des enregistrements.

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Points : 171
    Points
    171
    Par défaut
    Bonjour,

    Pourriez vous être plus clair dans la question ?

    On ne peut pas supprimer des lignes d'une table si la clef primaire référence des lignes dans une autre table, sans avoir auparavant supprimé les enregistrements liés.

    Cdt

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Oui ça c'est claire. Mais j'ai besoin comme meme de supprimer des enregistrement ou de modifier leurs contenus meme s'ils sont référencés par d'autres enregistrements. Aussi je veux meme supprimer un seul enregistrement sans supprimer les autres enregistrement référencés.
    Mon problème consiste à trouver les noms des colonnes qui constituent la clé primaire de la table pour pouvoir faire tous les modifications citées.

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Il y a encore d'autres clauses CASCADE

    sans clause cascade, impossible d'effacer la 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
     
    SQL> create table t1(x number primary key);
     
    Table created.
     
    SQL> create table t2(y number primary key,
      2    x number references t1(x));
     
    Table created.
     
    SQL> insert into t1 values (1);
     
    1 row created.
     
    SQL> insert into t2 values (1,1);
     
    1 row created.
     
    SQL> delete t1 where x=1;
    delete t1 where x=1
    *
    ERROR at line 1:
    ORA-02292: integrity constraint (AUDBA.SYS_C0018046) violated - child record
    found
    avec on delete cascade, les lignes filles sont effacées (dangereux!)
    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
     
    SQL> drop table t1;
     
    Table dropped.
     
    SQL> create table t1(x number primary key);
     
    Table created.
     
    SQL> create table t2(y number primary key,
      2    x number references t1(x) on delete cascade);
     
    Table created.
     
    SQL> insert into t1 values (1);
     
    1 row created.
     
    SQL> insert into t2 values (1,1);
     
    1 row created.
     
    SQL> delete t1 where x=1;
     
    1 row deleted.
     
    SQL> select * from t2;
     
    no rows selected
    avec on delete set null, les valeurs sont mises à NULL
    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
    31
    32
    33
    34
    35
    36
     
     
    SQL> drop table t2;
     
    Table dropped.
     
    SQL> drop table t1;
     
    Table dropped.
     
    SQL> create table t1(x number primary key);
     
    Table created.
     
    SQL> create table t2(y number primary key,
      2    x number references t1(x) on delete set null);
     
    Table created.
     
    SQL> insert into t1 values (1);
     
    1 row created.
     
    SQL> insert into t2 values (1,1);
     
    1 row created.
     
    SQL> delete t1 where x=1;
     
    1 row deleted.
     
    SQL> select * from t2;
     
             Y          X
    ---------- ----------
             1

    quand au dictionaire pour trouver les tables filles, il y a entre autres USER_CONSTRAINTS et USER_CONS_COLUMNS

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    je suis tout à fait d'accord, mais je suis entrain de developper une application d'aide à l'administration d'1 BD oracle, tous les outils existant ne suppriment pas les lignes référencés mais comme meme c'est possible.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/08/2009, 18h47
  2. determiner clés primaires d'une table donnée
    Par haykelFST dans le forum Développement
    Réponses: 6
    Dernier message: 27/11/2008, 16h46
  3. Est-ce possible d'avoir 2 clés primaires pour une table ?
    Par angell dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 01/06/2008, 18h59
  4. Les trous dans les clés primaires d'une base de données ?
    Par dymezac dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 27/09/2006, 09h22
  5. Comment avoir 2 clés primaires dans une table
    Par Guigui_ dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 18/01/2005, 08h29

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