MVSFORUMS.com Forum Index MVSFORUMS.com
A Community of and for MVS Professionals
 
 FAQFAQ   SearchSearch   Quick Manuals   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

ALTER Table ADD Column set to NULL in DB2V8

 
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Database
View previous topic :: View next topic  
Author Message
satyenderd
Beginner


Joined: 26 Aug 2005
Posts: 144
Topics: 73

PostPosted: Mon Dec 15, 2008 2:19 pm    Post subject: ALTER Table ADD Column set to NULL in DB2V8 Reply with quote

Hi all,

Is there any way to alter the table column to make it as NULL/NOT NULL.

I am using DB2 8.1 v
I have tried the following and got an error.
Code:

---------+---------+---------+---------+---------+---------+---------+-----
SET CURRENT SQLID = 'T0J0AJ7';                                             
---------+---------+---------+---------+---------+---------+---------+-----
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 0                 
---------+---------+---------+---------+---------+---------+---------+-----
                                                                           
ALTER TABLE TEMP5 ALTER COLUMN EAGE                                       
SET  NOT NULL;                                                             
---------+---------+---------+---------+---------+---------+---------+-----
DSNT408I SQLCODE = -104, ERROR:  ILLEGAL SYMBOL "NOT". SOME SYMBOLS THAT MI
         BE LEGAL ARE: CYCLE, NOCYCLE, ORDER, NOCACHE, NOORDER, NOMINVALUE,
         NOMAXVALUE                                                       
DSNT418I SQLSTATE   = 42601 SQLSTATE RETURN CODE                           
DSNT415I SQLERRP    = DSNHSM5S SQL PROCEDURE DETECTING ERROR               
DSNT416I SQLERRD    = 502 0  0  -1  150  0 SQL DIAGNOSTIC INFORMATION     
DSNT416I SQLERRD    = X'000001F6'  X'00000000'  X'00000000'  X'FFFFFFFF'   
         X'00000096'  X'00000000' SQL DIAGNOSTIC INFORMATION       


Thanks in advance.
_________________
Satya
Back to top
View user's profile Send private message
satyenderd
Beginner


Joined: 26 Aug 2005
Posts: 144
Topics: 73

PostPosted: Mon Dec 15, 2008 3:50 pm    Post subject: Reply with quote

Hi all,

I found one solution, as I am using DB2 V 8.1, it does not support alter columns to set to NULL or NOT NULL.
so I have added a CHECK constraint manually on that column.

Herein is the solution:
Code:

ALTER THE TABLE FROM  NULL TO NOT NULL


AS IN DB2 8.1 WE CANNOT SET A COLUMN FROM NULL TO NOT NULL AND VICE VERSA,
ADD A CHECK CONSTRAINT ON THE TABLE MANUALLY.
Code:

ALTER TABLE TEMP5 ADD CONSTRAINT CONST1 CHECK (EAGE IS NOT  NULL);                                                   
COMMIT;;                                                     

THEN TRY TO INSERT A ROW INTO THE TABLE WITH THE NULL VALUE:
HEREIN THE TABLE COLUMN EAGE IS DEFINED AS SMALLINT NULL

AND CHANGED TO NOT NULL USING ALTER COLUMN BY DEFINING A CONSTRAINT ON THE COLUMN

---------+---------+---------+---------+---------+---------+---------+---------
--SET CURRENT SQLID = 'T0J0AJ7';
Code:
                                                                               
INSERT INTO T0J0AJ7.TEMP5(ENAME)                                               
  VALUES('RAJU');                                                             
---------+---------+---------+---------+---------+---------+---------+---------
DSNT408I SQLCODE = -545, ERROR:  THE REQUESTED OPERATION IS NOT ALLOWED       
         BECAUSE A ROW DOES NOT SATISFY THE CHECK CONSTRAINT CONST1           
DSNT418I SQLSTATE   = 23513 SQLSTATE RETURN CODE                               
DSNT415I SQLERRP    = DSNXRINS SQL PROCEDURE DETECTING ERROR                   
DSNT416I SQLERRD    = -110 13172815  0  -1  0  0 SQL DIAGNOSTIC INFORMATION   
DSNT416I SQLERRD    = X'FFFFFF92'  X'00C9004F'  X'00000000'  X'FFFFFFFF'       
         X'00000000'  X'00000000' SQL DIAGNOSTIC INFORMATION                   
---------+---------+---------+---------+---------+---------+---------+---------
DSNE618I ROLLBACK PERFORMED, SQLCODE IS 0                                     
DSNE616I STATEMENT EXECUTION WAS SUCCESSFUL, SQLCODE IS 0                     
---------+---------+---------+---------+---------+---------+---------+---------


WHEN WE TRY TO INSERT THE ROW WITH NULL VALUE OF EAGE IT THROWS THE
ABOVE ERROR.

Please correct me if I am wrong.

Thanks in advance to all.
_________________
Satya
Back to top
View user's profile Send private message
kolusu
Site Admin
Site Admin


Joined: 26 Nov 2002
Posts: 12376
Topics: 75
Location: San Jose

PostPosted: Mon Dec 15, 2008 4:07 pm    Post subject: Reply with quote

satyenderd,

DB2 V8 does NOT support altering of null column to a not null column , so you would have to drop and re-create the table. You can do in DB2 V9 on wards.

Kolusu
Back to top
View user's profile Send private message Send e-mail Visit poster's website
satyenderd
Beginner


Joined: 26 Aug 2005
Posts: 144
Topics: 73

PostPosted: Tue Dec 23, 2008 11:49 pm    Post subject: Reply with quote

Thanks Kolusu.
_________________
Satya
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view    MVSFORUMS.com Forum Index -> Database All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


MVSFORUMS
Powered by phpBB © 2001, 2005 phpBB Group