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 :

Comment puis-je modifier la contrainte ?


Sujet :

Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2009
    Messages : 447
    Points : 241
    Points
    241
    Par défaut Comment puis-je modifier la contrainte ?
    Bonjour tout le monde ,

    je suis sur oracle 10g,
    j'ai crée une table contacts comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create table contacts (
    name varchar2(50),
    number_phone varchar2(50),
    email varchar2(30),
    constraint email_constraint check(regexp_like(email,'@')),
    constraint numner_phone_check
    check(regexp_like(number_phone,('[0,9][0,9][0,9]-[0,9][0,9]-[0,9][0,9]-[0,9][0,9]')))
    )
    aprés je voulais modifier la constraint numner_phone_check pour ajouter un [0,9] au début , j'ai fait alter table comme celui la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alter table contacts
    modify constraint NUMNER_PHONE_CHECK 
    CHECK(regexp_like(number_phone,'[0,9][0,9][0,9][0,9]-[0,9][0,9]-[0,9][0,9]-[0,9][0,9]'))
    /
    et une erreur s'affiche me dis comme quoi la commande ne se termine pas corrctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ERREUR à la ligne 3 :
    ORA-00933: la commande SQL ne se termine pas correctement
    est ce que je peux pas modifier la constrainte , ou je dois la supprimer puis la recréer ?

    Merci pour votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2009
    Messages : 447
    Points : 241
    Points
    241
    Par défaut
    bon j'ai dropé la contrainte puis je l'ai crée , maintenant la condition sur l'email ça marche , mais pour le number phone , il me donne une erreur méme si la condition est bien repécté.

    la condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    regexp_like(number_phone,'[0,9][0,9][0,9][0,9]-[0,9][0,9]-[0,9][0,9]-[0,9][0,9]'
    lorsque je fais entrez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     insert into contacts(name,number_phone,email)
     values ('Name','0777-63-71-79','Name@gmail.com');
    il me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ERREUR à la ligne 1 :
    ORA-02290: violation de contraintes (HR.NUMBER_PHONE_CHECK) de vérification
    est ce j'ai raté quelque chose !

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui, les plages dans les expressions régulières sont définies avec le tiret et non pas la virgule.

    Le plus simple reste de tester votre code.
    Au passage je vous propose des masques alternatifs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With MaTable as
    (
    select '0777-63-71-79' as number_phone from dual
    )
    select case when regexp_like(number_phone,'[0,9][0,9][0,9][0,9]-[0,9][0,9]-[0,9][0,9]-[0,9][0,9]') then 1 else 0 end as tst1
         , case when regexp_like(number_phone,'[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]') then 1 else 0 end as tst2
         , case when regexp_like(number_phone,'[0-9]{4}-[0-9]{2}-[0-9]{2}-[0-9]{2}')                   then 1 else 0 end as tst3
         , case when regexp_like(number_phone,'[0-9]{4}(-[0-9]{2}){3}')                                then 1 else 0 end as tst4
         , case when regexp_like(number_phone,'[[:digit:]]{4}(-[[:digit:]]{2}){3}')                    then 1 else 0 end as tst5
      from MaTable;
     
    TST1 TST2 TST3 TST4 TST5
    ---- ---- ---- ---- ----
       0    1    1    1    1

  4. #4
    Membre actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2009
    Messages : 447
    Points : 241
    Points
    241
    Par défaut
    Merci Waldar pour votre réponse, c'est bien clair, donc le problème était dans la chaîne de l'expression régulière .

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

Discussions similaires

  1. [MySQL] Comment puis-je modifier plusieurs champs à la volée
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 14/06/2013, 11h41
  2. Réponses: 4
    Dernier message: 22/07/2012, 22h16
  3. Comment puis-je modifier un css après un iframe
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 07/01/2011, 02h36
  4. Comment puis je modifier un assistant paiement
    Par dandav55 dans le forum E-Commerce
    Réponses: 1
    Dernier message: 26/09/2007, 15h30
  5. CSS comment puis-je modifier mon code pr avoir un bord blanc
    Par pierrot10 dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 30/09/2005, 20h19

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