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
0.99^365=0.03