Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2007, 02h36   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
Par défaut Contrainte pour String et Code postal

Allo tout lemonde,

Je cherche la façon d'ajouter une contrainte pour formatter mon code postal et un champ de type varchar.
1. Le champ code postal(Varchar)doit être de type LCLCLC (L = lettre et C = chiffre) Exemple H2S4F7.
faut-il faire un trigger ? si oui comment vérifier les caractères?

2. Mon champ Varchar devra accepter uniquement des chaines string alphabétiques, est-ce que cette ligne d'instruction est bonne ?
Code :
1
2
3
4
5
6
7
CREATE TABLE typeAdresse
(
nom		varchar(10),
 
CONSTRAINT checkcodePostalMin CHECK (nom BETWEEN 'a' AND 'z')
CONSTRAINT checkcodePostalMaj CHECK (nom BETWEEN 'A' AND 'Z')
)
aussi y-a-t-il une façon de faire une seule contrainte pour majuscule et minuscule à la fois sur le même champ?

Merci beaucoup à tout ceux qui pensent à m'aider.

Hola
hola150 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 07h15   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Version des outils ?
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 11h44   #3
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
Par défaut Contrainte pour String et Code postal

Oracle version 10g
hola150 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 14h18   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Code :
1
2
3
4
5
6
7
8
9
10
 
SQL> CREATE TABLE t(
  cp varchar2(6) CHECK (regexp_like(cp,'^([[:alpha:]]\d){3}$')), 
  nom varchar2(10) CHECK (regexp_like(nom,'^[[:alpha:]]+$')));
 
TABLE created.
 
SQL> INSERT INTO t VALUES ('H2S4F7','abcXXX');
 
1 row created.
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 16h58   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par hola150
y-a-t-il une façon de faire une seule contrainte pour majuscule et minuscule à la fois sur le même champ?
Selon votre besoin (qui pour moi n'est pas assez expliqué), vous devriez pouvoir vous en sortir en complétant l'exemple de Laurent avec l'option match_parameter positionnée à 'c'.

Cf. la doc sur REGEXP_LIKE
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 21h27   #6
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
J'essayé de créer un tablle de cette façon mais ça ne marche pas. Qu'en pensez-vous?

Code :
1
2
3
4
5
6
7
8
9
10
11
SQL> CREATE TABLE Membre
  2  (
  3   nom_Membre  VARCHAR(8),
  4   CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
  5   PRIMARY KEY       (nom_Membre)
  6  )
  7  /
 CHECK (regexp_like(nom_Circonscription,'^[[:alpha:]]+$'))),
                                                           *
ERREUR a la ligne 4 :
ORA-00922: OPTION erronee ou absente
J'ai essayé votre exemple et je vois qu'il fonctionne à merveille. Cependant le mien génère ce message d'erreur.

Qu'en pensez-vous?

Hola
hola150 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 21h34   #7
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
Excuse-moi. Bien sur j'avais mis un nom de contrainte avant le check

Code :
1
2
3
4
5
6
7
8
9
10
11
SQL> CREATE TABLE Membre
  2  (
  3   nom_Membre  VARCHAR(8),
  4   CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
  5   PRIMARY KEY       (nom_Membre)
  6  )
  7  /
 CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
                                                                                          *
ERREUR a la ligne 4 :
ORA-00922: OPTION erronee ou absente
hola150 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 21h36   #8
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 0
Points : 0
Code :
1
2
3
4
5
6
7
8
9
10
11
SQL> CREATE TABLE Membre
2 (
3 nom_Membre VARCHAR(8),
4 CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
5 PRIMARY KEY (nom_Membre)
6 )
7 /
CONSTRAINT checkNom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$'))),
*
ERREUR a la ligne 4 :
ORA-00922: OPTION erronee ou absente
Tout ce que j'ai essayé ça ne marche pas !!!!

Meric pour votre aide
hola150 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2007, 09h54   #9
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
tu as une parenthèse droite en trop.

Code :
1
2
3
4
5
6
7
8
9
 
CREATE TABLE Membre
(
  nom_Membre VARCHAR(8),
  CONSTRAINT nom_Membre CHECK (regexp_like(nom_Membre,'^[[:alpha:]]+$')),
  PRIMARY KEY (nom_Membre)
);
 
TABLE created.
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h08.


 
 
 
 
Partenaires

Hébergement Web