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 :

constraint designation unique


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de restart
    Inscrit en
    Novembre 2009
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 84
    Par défaut constraint designation unique
    bonjour
    je suis entrain de crée une base de donnée d'une petite société avec oracle a titre d'exercice
    la table qui me cause problème a été crée par la commande sql suivante:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table articles (
    numero number(6) constraint pk_articles primary key,
    designation varchar2(255) unique,
    prix number(8,2) not null,
    couleur varchar2(31)
    );

    on m'as demandé d'ajouter une contrainte d'unicité sur la designation de articles a travers la commande :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    alter table articles
    add constraint un_designation designation unique ;
    ce que je ne comprend pas c'est l'utilité de faire une contrainte sur la désignation
    d'habitude les constraintes ,a ce que je sais, sont fait pour les clé primeres ou étrangeres
    mais a quoi ce peux servir de faire une constraint sur la designation
    merci

  2. #2
    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
    Bref, c'est pour s'assurer qu'il n'y auras pas des doublons dans cette colonne.
    C'est un besoin qui arrive souvent quand la table n'a pas une clé primaire fonctionnelle mais une clé primaire ersatz (surrogate key). Dans ce cas normalement la colonne en question possède également une contrainte de type not null.

  3. #3
    Membre confirmé Avatar de restart
    Inscrit en
    Novembre 2009
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 84
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Bref, c'est pour s'assurer qu'il n'y auras pas des doublons dans cette colonne.
    ouais mais la désignation est déjà défini comme étant une variable de type varchar2(255) UNIQUE

    quel sont les risques qui peuvent avoir lieu si on ne déclare par une constraint d'unicité sur la désignation

  4. #4
    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
    La designation n'est pas une "variable" !
    Le fait d'avoir defini déjà la contrainte UNIQUE rends inutile la deuxième rédefinition.
    Mais, je pense qu'on essaie en fait à t'expliquer que les contraintes definies comme dans ton exemple ont un nom généré par Oracle qui est difficile à mentenir. D'où l'idée d'ssayer l'autre sintaxe qui permet de nommer la contrainte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    mni@DIANA> select constraint_name, constraint_type
      2  from user_constraints
      3  where table_name = 'ARTICLES';
     
    CONSTRAINT_NAME                C
    ------------------------------ -
    SYS_C0012973                   C
    PK_ARTICLES                    P
    SYS_C0012975                   U

  5. #5
    Membre confirmé Avatar de restart
    Inscrit en
    Novembre 2009
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 84
    Par défaut
    Citation Envoyé par mnitu Voir le message
    La designation n'est pas une "variable" !
    Le fait d'avoir defini déjà la contrainte UNIQUE rends inutile la deuxième rédefinition.
    Mais, je pense qu'on essaie en fait à t'expliquer que les contraintes definies comme dans ton exemple ont un nom généré par Oracle qui est difficile à mentenir. D'où l'idée d'ssayer l'autre sintaxe qui permet de nommer la contrainte.
    donc si j'ai bien compris le fete de rendre la désignation unique par définion de la table :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    designation varchar2(255) unique,
    a générer une contrainte d'unicité qui a un nom difficile a maintenir et rend la constraint défini sur la désignation par la commande :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    add constraint un_designation designation unique;
    unitile en quelque sorte

    mais elle a été juste donner a titre d'exemple pour comprendre qu'il vaut mieu donner un nom signification a chaque contrainte pour pouvoir l'identifier plus facilement
    c'est ca ?

  6. #6
    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 restart Voir le message
    ...
    c'est ca ?
    Voilà!
    Petit remarque: tu fait autant de fautes d'orthographe que moi.

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

Discussions similaires

  1. probleme Violation of unique key constraint et SSIS
    Par housni dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 07/08/2007, 16h28
  2. ORA-00001: unique constraint (%s.%s) violated
    Par Louisa2005 dans le forum SQL
    Réponses: 1
    Dernier message: 14/06/2007, 16h58
  3. Domain et constraint UNIQUE lors de création de table
    Par nek_kro_kvlt dans le forum SQL
    Réponses: 3
    Dernier message: 22/10/2006, 20h49
  4. [Imp]"unique constraint violated" sur un import
    Par u_roisin dans le forum Oracle
    Réponses: 10
    Dernier message: 16/02/2006, 10h55
  5. Réponses: 3
    Dernier message: 30/03/2005, 23h15

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