[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
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).