db2将原表列notnull属性修改为null属性的方法

 

今天把自己遇到的一个小问题跟大家分享一下如何修改db2数据库表中列的属性--将列的非空属性改为允许空的属性,修改数据表的某一列属性其实很简单但是里面有需要细节需要dba注意,毕竟数据的安全才是最重要的啊!
db2数据库支持直接使用ddl修改原表列属性,但是在修改之前需要确认要修改的列是否存在唯一性约束,否则你是无法修改属性的。
注:该操作会导致表处于pending状态,在操作之前需要确认该表是否24小时表,是否为大表(因为需要reorg重置表状态,数据量太大将导致业务中断时间变长),谨慎操作~
以下是具体操作步骤,敬请参考:
1、首先检查需要修改的列是否含有唯一性检查约束(注:主键不可设置为null)
1)使用db2系统表查询将要修改的表是否含有唯一约束
  #db2 "select CONSTNAME, type  from SYSCAT.TABCONST  where TABNAME='T01'"
  #主要看type,一般type的值有P(主键约束)、U(唯一性约束)、K(列值检查)、F(外键)
  #如果返回的type值中有没有U类型的行则可以直接将原列设置为null然后reorg即可,反之需要继续第二步
2)使用db2look工具确认
   #db2look -d dbname -e -t tabname
   #查看将要修改的表的ddl语句,检查是否有unique子句,如果有这证明有唯一性约束列存在
2、如果有唯一性约束且恰好定义在需要修改的列上,我们需要先将该列的唯一性约束删除,如果没有则跳过该步
   #db2 "alter table tabname drop unique CONSTNAME "
   #回退步骤:db2 "alter table tabname add unique(colname)"
3、修改列的属性为null
db2 "alter table tabname ALTER colname drop not null"
#回退步骤:db2 "alter table t01 ALTER colname set not null"
4、对该表进行重组
因为修改列的属性后,该表处于reorg pending状态所以我们必须进行reorg才能使该表恢复到正常状态(这一步很重要)
db2 "reorg table tabname use tempsys"
db2 "runstats on table tabname with distribution and detailed indexes all"
5、验证
db2 load query table tabname
如果返回表状态为normal则此次操作完成。

最新文章

  1. jQuery Validate验证框架详解
  2. copy
  3. 解决ssh无密码登录不成功的问题
  4. [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
  5. JS模板引擎:tppl
  6. Ubuntu下使用rpm 软件包
  7. 20 Zabbix系统性能优化建议
  8. Debian系列软件管理(第二版)
  9. 从零开始学TensorFlow
  10. CSS之文本
  11. Java 初学UDP传输
  12. 深入理解Java中的反射机制
  13. 剑指Offer 16. 合并两个排序的链表 (链表)
  14. sklearn datasets模块学习
  15. k8s weave network IP回收冲突
  16. [UE4]下拉菜单
  17. 如何区分Java中的方法重载和重写
  18. mysql数据出现Unknown column 'user_uid' in 'field list' sql错误
  19. 【ARM】2440裸机系列-图片显示
  20. 在Textbox中按回车键后继续获取焦点

热门文章

  1. LoadRunner录制:检查点
  2. iOS设备定位服务开启判定
  3. 关于comet
  4. 一个可变布局列表,有9种布局item大小,每个item可拖拽切换位置
  5. 360极速浏览器无法正确getHours
  6. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
  7. 开源框架AsyncHttpClient使用
  8. Java 装饰模式(4.4)
  9. printf函数对参数的计算顺序
  10. error while loading shared libraries错误解决