Create table Champ NOT NULL

Client Access, IBMi Access Client Solution (ACS) , WebAccess...
Répondre
albert06
Messages : 16
Enregistré le : sam. 07 juil. 2018, 09:17:47

Create table Champ NOT NULL

Message par albert06 »

Bonjour je crée une table dans un shémas via ACS version 1.1.8.0 avec l’instruction ci-dessous.

CREATE TABLE LIEN_PARAMETRAGE FOR SYSTEM NAME TPLIEN (
ID_TYPE_LIEN FOR COLUMN IDTPLIEN CHAR(5) CCSID 297 NOT NULL DEFAULT '' ,
LIBELLE_LIEN FOR COLUMN LBLIEN CHAR(15) CCSID 297 NOT NULL ,
CONSTRAINT PK_TPLIEN_IDTPLIEN PRIMARY KEY( ID_TYPE_LIEN ) )

RCDFMT TPLIENR ;

LABEL ON TABLE LIEN_PARAMETRAGE
IS 'Type de lien entre personnes' ;

LABEL ON COLUMN LIEN_PARAMETRAGE
( ID_TYPE_LIEN IS 'IDENTIFIANT TYPE LIEN' ,
LIBELLE_LIEN IS 'LIBELLE LIEN' ) ;

LABEL ON COLUMN LIEN_PARAMETRAGE
( LIBELLE_LIEN TEXT IS 'LIBELLE LIEN' ) ;
La table est relativement simple.
La difficulté vient du champ LIBELLE_LIEN. Ce champ est spécifié NOT NULL et pourtant il n’est pas obligatoire !
Connaissez-vous une méthode pour le rendre obligatoire ? Et pourriez-vous m’expliquer l’utilité de l’instruction NOT NULL ?
Merci pour vos réponses.

thomas.barberot
Messages : 56
Enregistré le : jeu. 12 avr. 2012, 14:50:53

(sujet inconnu)

Message par thomas.barberot »

NOT NULL et obligatoire ne sont pas des notions qui se comparent vraiment.

le NOT NULL impose qu'il y ait une valeur non nulle dans la champ, par exemple des caractères blancs (comme sur l'instruction), mais aussi n'importe valeur par défaut comme 'BONJOUR' ou CURRENT_USER.
Mais un champ rempli de blanc comme le vôtre est-il considéré comme ne répondant pas au critère "obligatoire" ? Pas d'un point de vue système.

Je pense que ce que vous voulez, c'est une unicité sur la colonne. Il faut donc créer une contrainte UNIQUE sur cette colonne. On pourra alors insérer une fois un libellé "à blanc", mais pas deux.

florian67
Messages : 134
Enregistré le : lun. 23 déc. 2013, 17:03:12

(sujet inconnu)

Message par florian67 »

Salut,

Comment Est-ce que tu fais ton insert ?
Par un programme RPG?

Je pense que le problème vient que le "NULL" n'existe pas vraiment dans l'IBMi. Une variable peut être à blanc mais pas à NULL. (Il me semble)

Florian

mgris
Messages : 3
Enregistré le : jeu. 04 oct. 2018, 13:23:57
Contact :

Create table Champ NOT NULL

Message par mgris »

Bonjour,
La notion de Null et d'obligatoire sont effectivement deux choses différentes.
Not Null implique qu'il y ait une donnée dans la zone mais une suite de blancs est une suite de caractères ce n'est donc pas null.
Si votre demande c'est que ce champ soit rempli de caractères différents de blancs vous pouvez ajouter une contrainte avec l'instruction
LIBELLE_LIEN FOR COLUMN LBLIEN CHAR(15) CCSID 297 NOT NULL Check (LIBELLE_LIEN <> '' )

Ainsi le LIBELLE_LIEN devra toujours être différent de blanc

Marie

albert06
Messages : 16
Enregistré le : sam. 07 juil. 2018, 09:17:47

(sujet inconnu)

Message par albert06 »

Bonjour et Merci,
Vos réponses m'ont permis d’éclaircir certains points.
L'option du CHECK semble correspondre à ce que je veux.
Albert.

Répondre