Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 25/05/2007, 14h50   #1
Membre du Club
 
Inscription : mai 2005
Messages : 91
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 91
Points : 40
Points : 40
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
tux2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2007, 15h07   #2
Membre du Club
 
Inscription : mai 2005
Messages : 91
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 91
Points : 40
Points : 40
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.
tux2005 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2007, 09h36   #3
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Je vient de faire un test:

Code :
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).
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2007, 10h37   #4
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 097
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 097
Points : 1 706
Points : 1 706
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 ?
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 14h14   #5
Invité de passage
 
Inscription : juin 2007
Messages : 1
Détails du profil
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 :
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).
loki_le_grec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2007, 22h00   #6
jab
Rédacteur
 
Avatar de jab
 
Homme Jean-Alain Baeyens
SharePoint developpeur
Inscription : février 2004
Messages : 1 172
Détails du profil
Informations personnelles :
Nom : Homme Jean-Alain Baeyens
Âge : 48
Localisation : Belgique

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

Informations forums :
Inscription : février 2004
Messages : 1 172
Points : 3 131
Points : 3 131
Envoyer un message via ICQ à jab Envoyer un message via MSN à jab Envoyer un message via Skype™ à jab
Si Drop not null ne fonctionne pas, je ne vois pas d'autre solution que de re créer la table.
jab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 22h57   #7
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 097
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 53
Localisation : France, Seine Saint Denis (Île de France)

Informations professionnelles :
Activité : Spécialiste Delivery Mainframe IBM
Secteur : Finance

Informations forums :
Inscription : octobre 2005
Messages : 1 097
Points : 1 706
Points : 1 706
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 ...
Luc Orient 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 03h55.


 
 
 
 
Partenaires

Hébergement Web