Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 15/02/2005, 17h40   #1
Membre éclairé
 
Inscription : janvier 2004
Messages : 319
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 319
Points : 384
Points : 384
Par défaut Mettre null dans un champ avec un domaine de valeur

Bonjour à tous

je souhaite pouvoir affecter une de mes colonnes à null sachant qu'elle n'est définie que sur un domaine de valeur (contenant 3 valeurs).

Bon, si j'ai bien compris, je ne peux pas affecter ma colonne à "null" bien que le champ ne soit pas "not-null". Est-ce que je peux feinter ce problème en posant une contrainte directement à la création de la table qui ne soit pas un domaine de valeur, ceci me permettant (peut-être :s) de mettre des valeurs à null.

si je ne suis pas assez clair, n'hésitez pas à me le dire
merci d'avance.
Kantizbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 17h47   #2
Rédacteur
 
Inscription : janvier 2004
Messages : 2 123
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : janvier 2004
Messages : 2 123
Points : 1 977
Points : 1 977
Salut,

Je ne suis pas sur de bien comprendre, mais pourquoi ne pas faire comme cela ?
Code :
1
2
 
INSERT INTO Ma_Table (Champ1,Champ2,Champ3) VALUES (NULL,'toto','titi');
__________________
Ancien pseudo : yobenzen

Recherche un emploi de Chef de Projet ou Développeur en Normandie
Delphi/Oracle/Interbase
Migration vers symfony

CV :
- LinkedIn
- Viadeo
Benjamin GAGNEUX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 17h50   #3
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Si vous donniez la définition de votre colonne ca serait un peu plus clair.

Si vous utilisez un domaine mettez la définition du domaine. Et les contraintes de cette colonne/domaine.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 17h55   #4
Membre éclairé
 
Inscription : janvier 2004
Messages : 319
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 319
Points : 384
Points : 384
salut.

Pour illustrer et reprendre ton exemple voilà ce que j'ai sur le champ 1 :

Code :
1
2
3
4
5
6
7
8
9
10
 
CREATE domain TITRE AS VARCHAR(3)
        CHECK (value IN ('M.','MME','MLE'));
 
CREATE TABLE FOO
(
    Champ1      TITRE            
    Champ2      VARCHAR(50)            NOT NULL
    Champ3      VARCHAR(50)            NOT NULL
);
La requête que tu propose plante car null ne fait pas partie du domaine de valeur (enfin, c'est comme ça que je l'interprète) bien que le champ1 soit nullable.

Merci de m'avoir donner l'occasion c'être plus clair
Kantizbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 18h01   #5
Membre éclairé
 
Inscription : janvier 2004
Messages : 319
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 319
Points : 384
Points : 384
Bon reprenons. Dans cet exemple, disons que la civilité n'est pas obligatoire. Je dois pouvoir mettre la valeur du champ à null.

Comment insérer une ligne avec null pour ce champ, tout en conservant le mécanisme du domaine de valeur?
Kantizbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 18h01   #6
Rédacteur
 
Inscription : janvier 2004
Messages : 2 123
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : janvier 2004
Messages : 2 123
Points : 1 977
Points : 1 977
Citation:
La requête que tu propose plante car null ne fait pas partie du domaine de valeur (enfin, c'est comme ça que je l'interprète) bien que le champ1 soit nullable
C'est curieux car Null n'est pas une valeur mais une absence de valeur.

peut etre en faisant un
Code :
1
2
3
 
CREATE domain TITRE AS VARCHAR(3) 
CHECK (value IN ('M.','MME','MLE') OR value IS NULL);
Je ne suis pas sur du tout de ce que j'avance mais je pense que quelque chose dans ce style devrait marcher.

En espérant t'avoir aider.
A bientot.
__________________
Ancien pseudo : yobenzen

Recherche un emploi de Chef de Projet ou Développeur en Normandie
Delphi/Oracle/Interbase
Migration vers symfony

CV :
- LinkedIn
- Viadeo
Benjamin GAGNEUX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2005, 18h04   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Modifiez votre domaine pour qu'il accepte le NULL :

Code :
1
2
3
CREATE DOMAIN TITRE AS
  VARCHAR(3) CHECK (   value IN ('M.','MME','MLE')
                    OR value IS NULL)
Edité : J'ai l'impression qu'il y a de l'echo, Yobenzen a été plus rapide que moi
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2005, 09h24   #8
Membre éclairé
 
Inscription : janvier 2004
Messages : 319
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2004
Messages : 319
Points : 384
Points : 384

merci à tous les deux en tout cas ça marche!!!!
Kantizbak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h59.


 
 
 
 
Partenaires

Hébergement Web