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 :

Suppression clef primaire et index associé


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 083
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 083
    Par défaut Suppression clef primaire et index associé
    Bonjour,
    en suivant cette discussion j'ai supprimé la contrainte et ensuite supprime l'index.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE MATABLE DISABLE  CONSTRAINT MAKEY_PK CASCADE;
    DROP INDEX MAKEY_PK;
    Maintenant je vais créer l'index en question. Est-ce que il faut des actions supplémentaires pour établir la contrainte ?

    D'avance merci.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Par défaut
    Bonjour,
    Le mot clé DISABLE, permet de désactiver une contrainte.
    pour supprimer une contrainte, vous pouvez utiliser l'une de ces syntaxes (par défaut l'index sera supprimé):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ALTER TABLE nom_table
    DROP PRIMARY KEY CASCADE [DROP|KEEP INDEX];
    //ou bien dans le cas d''une contraine unique
    DROP UNIQUE(nom_colonne(s)) CASCADE [DROP|KEEP INDEX];
    //Autre type de contrainte
    DROP CONSTRAINT nom_contrainte CASCADE;
    Pour les contraintes Primary key et Unique un index unique est créée implicitement.
    Exemple de création d'index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE [UNIQUE] INDEX nom_index ON nom_table (nom_colonne(s));
    //ou bien lors de la création ou la modification de la table "CREATE Table ... et ALTER Table ..."
    ALTER TABLE nom_table
    ADD CONSTRAINT nom_contrainte PRIMARY KEY(nom_colonne(s))
    USING INDEX (CREATE UNIQUE INDEX nom_index ON nom_table(nom_colonne(s));

  3. #3
    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 goldray Voir le message
    ...
    Pour les contraintes Primary key et Unique un index unique est créée implicitement.
    ...
    Seulement si un index approprié n'existe pas. Et parfois il peut ne pas être unique.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Seulement si un index approprié n'existe pas. Et parfois il peut ne pas être unique.
    Ça n'est pas faux, mais en pratique, tu en rencontres souvent, des clés primaires reposant sur un index préexistant, et en plus non unique ?

  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
    Il y a quelques effets de bord quand l'index est crée automatiquement lors de la déclaration d'une clé primaire: le nom attribue automatiquement ne corresponde jamais aux normes de programmation ainsi que le comportement quand la contrainte est activée/désactivée. Je sais, Oracle a étendue la syntaxe depuis pas mal de temps. Et il y a aussi les vielles applications développées avant l'apparition des contraintes ou quand celles ci posait autant des problèmes qu'elles été supposées à résoudre.
    L'histoire de l'unicité c'est juste un petit rappel comme dans Twin Pix:
    Les hiboux ne sont pas ce que l'on pense

Discussions similaires

  1. [AC-2010] Clef primaire et Indexes uniques d'un DAO Recordset ?
    Par marot_r dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/12/2015, 13h31
  2. clef primaire ou index unique
    Par jose.ignacio.agata dans le forum SQL
    Réponses: 1
    Dernier message: 25/01/2008, 13h25
  3. Clef primaire access, Indexé avec doublon
    Par Asurmena dans le forum Access
    Réponses: 1
    Dernier message: 05/06/2006, 11h04
  4. Difference entre Clef primaire et Index
    Par vijeo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 16/05/2006, 16h07
  5. Suppression de clef primaire
    Par castaka dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/07/2005, 10h41

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