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 :

[SQL]Questions sur les contraintes ?


Sujet :

Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Points : 201
    Points
    201
    Par défaut [SQL]Questions sur les contraintes ?
    Bonjour,

    J'épprouve des difficultés à comprendre la nuances de quelques commande sur les contraintes.

    Quel est la différences entre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       ENABLE VALIDATE
       ENABLE NOVALIDATE
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       DISABLE VALIDATE
       DISABLE NOVALIDATE
    Pouvez-vous m'éclairer à ce sujet ?

    Merci

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    ENABLE : la contrainte est activée (pour le futur), DISABLE non.
    VALIDATE : la contrainte est validée sur les données existentes. NOVALIDATE non.

    C'est plus clair ?


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #3
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    ENABLE active ou pas la contrainte
    VALIDE vérifie ou pas la validité de la contrainte au moment de la création.
    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
     
    SQL>create table orafrance (id number);
     
    Table créée.
     
    SQL>insert into orafrance values ( null);
     
    1 ligne créée.
     
    SQL>ALTER TABLE SYSTEM.ORAFRANCE ADD 
      2  CONSTRAINT no_null
      3   CHECK (id is not null) ENABLE
      4   VALIDATE;
    CONSTRAINT no_null
               *ERREUR à la ligne 2 :
    ORA-02293: impossible de valider (SYSTEM.NO_NULL) - violation d'une contrainte de contrôle
    Le VALIDATE ne passe pas puisque j'ai une valeur 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
    SQL>delete from orafrance;
     
    1 ligne(s) supprimée(s).
     
    SQL>insert into orafrance values (1);
     
    1 ligne créée.
     
    SQL>ALTER TABLE SYSTEM.ORAFRANCE ADD
      2    CONSTRAINT no_null
      3     CHECK (id is not null) ENABLE
      4     VALIDATE;
     
    Table modifiée.
     
    SQL>insert into orafrance values (null);
    insert into orafrance values (null)
    *
    ERREUR à la ligne 1 :
    ORA-02290: violation de contraintes (SYSTEM.NO_NULL) de vérification
    Là aucun problème, ma contrainte est créée et je ne peux pas insérer null

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL>alter table orafrance disable constraint no_null;
     
    Table modifiée.
     
    SQL>insert into orafrance values (null);
     
    1 ligne créée.
     
    SQL>
    Et là j'insère null puisque la contrainte est désactivée.

    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
    SQL>alter table orafrance drop constraint no_null;
     
    Table modifiée.
     
    SQL>ALTER TABLE SYSTEM.ORAFRANCE ADD
      2     CONSTRAINT no_null
      3      CHECK (id is not null) ENABLE
      4  NOVALIDATE;
     
    Table modifiée.
     
    SQL>insert into orafrance values (null);
    insert into orafrance values (null)
    *
    ERREUR à la ligne 1 :
    ORA-02290: violation de contraintes (SYSTEM.NO_NULL) de vérification
    Et là, j'ai créé ma contrainte grace à NOVALIDATE et je ne peux plus insérer null

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    422
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2004
    Messages : 422
    Points : 201
    Points
    201
    Par défaut
    A oui bcp mieux, j'ai pigé.

    merci les gars pour l'info

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

Discussions similaires

  1. Questions sur les rêquetes sql oracle?
    Par naima2005 dans le forum SQL
    Réponses: 6
    Dernier message: 24/12/2007, 13h57
  2. [SQL Server 2005] Questions sur les droits
    Par Reskibil dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/10/2007, 16h56
  3. [SQL 2000] Question sur les types de données
    Par Angath dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/11/2006, 14h05
  4. question sur les contraintes
    Par shadowmoon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 31/05/2005, 08h47
  5. Question sur les contraintes d'intégrités
    Par eGGyyS dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/04/2004, 13h51

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