db2字段及字段属性修改(增,删,改)操作

1.添加字段

alter table [table_name] add [column_name] [column_type] add [column_name] [column_type];

 

2.添加字段带默认值

alter table [table_name] add column [column_name] [column_type] not null with default [value];

 

3.删除字段

alter table [table_name] drop column [column_name];

 

4.修改字段类型

alter table  [table_name] alter column [column_name] set data type  [column_type];

 

5.将原表列not null属性修改为null属性

alter table  [table_name] alter column [column_name] drop not null;

以上所有的修改都会将表处于reorg pending状态所以我们必须进行reorg才能使该表恢复到正常状态。否则表不可以使用,查询或更新报错 DB2 sqlstate 57016

 

6.如果要修改为null属性的字段有约束性,则不能直接修改。

6.1检查约束性

select CONSTNAME, TYPE from SYSCAT.TABCONST where TABNAME=[table_name];

主要看type,一般type的值有P(主键约束)、U(唯一性约束)、K(列值检查)、F(外键)

以主键为例:

6.2删除主键:

ALTER TABLE [table_name] DROP PRIMARY KEY;

6.3 reorg操作见第7步

6.4 新增主键(没有则跳过)

alter table [table_name]  add constraint MY_TABLE_PK PRIMARY KEY([column1],[column2]...);

MY_TABLE_PK 名称随意,我习惯用表名_PK

6.5 修改为null属性

alter table [table_name] alter column [column]  drop not null;

 

7.reorg操作

reorg table [table_name] 

如果我们不是DBA的话,好多链接数据库的客户端工具是不能执行 reorg table [table_name] 的,我们可以用下面的语句执行reorg操作:

call SYSPROC.ADMIN_CMD('reorg table [table_name]')

实际上reorg就是调用的SYSPROC.ADMIN_CMD

 

posted @ 2022-01-26 09:21  wlv1314  阅读(4752)  评论(0编辑  收藏  举报