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

DB2 Discussion :

[DB2/SQL] Passer une colonne de NULL à NOT NULL


Sujet :

DB2

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 80
    Points
    80
    Par défaut [DB2/SQL] Passer une colonne de NULL à NOT NULL
    Bonjour,

    Je voudrais passer une colonne C1 de la table T1 de NULL à NOT NULL.
    J'ai tout essayé (sauff la bonne solution ;-) ) et DB2 me rejette à tous les coups. j'ai le plus souvent l'erreur suivante :
    SQLCODE = -104, ERROR: ILLEGAL SYMBOL SOME SYMBOLS THAT MIGHT BE LEGAL ARE: KEY

    Voici ce que j'ai essayé :
    ********
    ALTER TABLE T1
    ALTER C1
    NOT NULL;

    puis j'ai essayé :
    *************
    ALTER TABLE T1
    ALTER COLUMN C1
    NOT NULL;

    puis
    ****
    ALTER TABLE T1
    ALTER C1
    SET DATA CHAR(5)
    NOT NULL;

    et aussi :
    *******
    ALTER TABLE T1
    MODIFY COLUMN C1
    NOT NULL;

    et
    ****
    ALTER TABLE T1
    MODIFY C1
    NOT NULL;

    Voilà et je crois que j'en oublie, je n'arrive pas à trouver les différences de SQL entre Oracle, SQL Server et DB2 et donc je n'arrive pas à trouver la bonne syntaxe pour modifer ma colonne sous DB2.

    je vous remercie par avance pour votre aide.

    Tux

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 100
    Points : 80
    Points
    80
    Par défaut
    j'ai essayé de la supprimer pour la recréer mais là aussi il me refuse mon SQL :
    ALTER TABLE T1
    DROP COLUMN C1;


    j'ai l'erreur suivante :
    DSNT408I SQLCODE = -104, ERROR: ILLEGAL SYMBOL "C1". SOME SYMBOLS THAT
    MIGHT BE LEGAL ARE: KEY
    DSNT418I SQLSTATE = 42601 SQLSTATE RETURN CODE
    DSNT415I SQLERRP = DSNHPARS SQL PROCEDURE DETECTING ERROR
    DSNT416I SQLERRD = 0 0 0 -1 36 0 SQL DIAGNOSTIC INFORMATION
    DSNT416I SQLERRD = X'00000000' X'00000000' X'00000000' X'FFFFFFFF'
    X'00000024' X'00000000' SQL DIAGNOSTIC INFORMATION


    J'ai ajouter le nom de la table (T1.C1) pour qu'il me reconnaisse ma colonne mais rien à faire.

    Merci pour votre aide.

  3. #3
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Je vient de faire un test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    db2 => create table T1 (c1 varchar(50), c2  varchar(50))
    DB20000I  The SQL command completed successfully.
    db2 => insert into t1 (c1,c2) values ('1','2')
    DB20000I  The SQL command completed successfully.
    db2 => alter table T1 alter column c2 set not null
    DB20000I  The SQL command completed successfully.
    Mais évidemment C2 ne peut contenir de valeurs null. Il est préférable de faire un update des valeurs null par une valeur par défaut pour s'en assurer.

    Je pense que tu n'avais pas utilisé la syntaxe correcte. Si le problème persiste, une question subsite. Quelle version de DB2 as-tu ? (z/os/as400,Windows/linux + numéro de version).

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par jab
    ... Si le problème persiste, une question subsite. Quelle version de DB2 as-tu ? (z/os/as400,Windows/linux + numéro de version).
    A voir son message d'erreur, je dirais qu'il utilise DB2 for z/OS.
    Or, au moins jusqu'à la V7, cette modification n'est pas possible.
    Peut-être en V8 FULL FUNCTION ou en V9 ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Et l'inverse NOT NULL vers NULL
    Bonjour,
    ALTER TABLE xx ALTER COLUMN yy DROP NOT NULL; ne fonctionne pas peut-il être fait sans export drop create import + prise en compte des FK, ou utilisation de la fonction SYSPROC.ALTOBJ ?

    merci d'avance

    Citation Envoyé par jab
    Je vient de faire un test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    db2 => create table T1 (c1 varchar(50), c2  varchar(50))
    DB20000I  The SQL command completed successfully.
    db2 => insert into t1 (c1,c2) values ('1','2')
    DB20000I  The SQL command completed successfully.
    db2 => alter table T1 alter column c2 set not null
    DB20000I  The SQL command completed successfully.
    Mais évidemment C2 ne peut contenir de valeurs null. Il est préférable de faire un update des valeurs null par une valeur par défaut pour s'en assurer.

    Je pense que tu n'avais pas utilisé la syntaxe correcte. Si le problème persiste, une question subsite. Quelle version de DB2 as-tu ? (z/os/as400,Windows/linux + numéro de version).

  6. #6
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Si Drop not null ne fonctionne pas, je ne vois pas d'autre solution que de re créer la table.

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par Luc Orient
    A voir son message d'erreur, je dirais qu'il utilise DB2 for z/OS.
    Or, au moins jusqu'à la V7, cette modification n'est pas possible.
    Peut-être en V8 FULL FUNCTION ou en V9 ?
    Finalement et après recherche c'est pas possible en V8 non plus ...

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  2. Sql serveur 2000 Changer null/not null et valeur par defaut
    Par mictif dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/03/2006, 07h55
  3. prob ajout de colonne ds une table en tant NOT NULL
    Par elhosni dans le forum Access
    Réponses: 3
    Dernier message: 19/11/2005, 22h18
  4. [DB2]Modification d'une colonne
    Par ahoyeau dans le forum DB2
    Réponses: 4
    Dernier message: 08/10/2004, 00h24

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