p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mai 2009
    Messages
    425
    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 : 425
    Points : 200
    Points
    200

    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 confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mai 2009
    Messages
    425
    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 : 425
    Points : 200
    Points
    200

    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

    Homme Profil pro
    Ingénieur d'études en décisionnel
    Inscrit en
    septembre 2008
    Messages
    7 167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études en décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : septembre 2008
    Messages : 7 167
    Points : 15 029
    Points
    15 029

    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 confirmé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mai 2009
    Messages
    425
    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 : 425
    Points : 200
    Points
    200

    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. Comment puis-je modifier plusieurs champs à la volée
    Par pierrot10 dans le forum PHP & MySQL
    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