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则此次操作完成。

转载于:https://www.cnblogs.com/yelongsan/p/6427359.html

db2 设置表 not null相关推荐

  1. db2数据库表修改列为主键

    需要对一个已经有数据的表的列进行修改,列原属性是可以为空且有一个默认值,现在想修改为主键. 原来的ddl:column varchar(16) DEFAULT '0' 执行以下操作:(将列设为非空) ...

  2. oracle中设置表的主键字段为自增序列(实例)

    oracle中设置表的主键字段为自增序列(实例) 1.首先创建一个表(如日志表) //删除库表中存在的日志表 drop table S_LOG_INFO cascade constraints; // ...

  3. 代码分享-SQLServer设置表或者列的说明

    在SQLServer数据库中,是可以设置表或者列的注释说明的,但是还比较复杂,而且分成新增和修改两个不同的 存储过程,这就意味着你可能得切换,当表本身已经有说明的时候, 你就必须调用更新的存储过程,否 ...

  4. Java设置mysql字段为null_MySQL字段的属性应该尽量设置为NOT NULL

    数据库建表时,对于一些可填可不填的字段,我们应该尽量把它设置为 NOT NULL.这种做法即可以提高性能,又可以在很大程度上避免空指针类的问题,好处颇多. 1.节省空间 NULL 列需要更多的存储空间 ...

  5. db2 修改表空间自增长_db2 创建表空间、增大表空间以及增加临时表空间

    一.创建表空间 db2 "CREATE REGULAR TABLESPACE DMS_DBDATA IN DATABASE PARTITION GROUP IBMDEFAULTGROUP P ...

  6. mysql text not null_【20181101】MySQL text类型的column设置为NOT NULL 导致主从1364

    环境 系统版本 : CentOS release 6.8 (Final) MySQL版本:5.6.29-log MySQL Community Server (GPL) MySQL主从配置信息 bin ...

  7. 六、MyBatis特殊的SQL:模糊查询、动态设置表名、校验名称唯一性

    文章目录 六.MyBatis特殊的SQL 6.1 模糊查询 6.2 动态设置表名 6.3 校验名称唯一性 本人其他相关文章链接 六.MyBatis特殊的SQL 6.1 模糊查询 方式1:select ...

  8. oracle设置大表空间,Oracle怎样设置表空间数据文件大小

    这篇文章主要介绍了Oracle如何设置表空间数据文件大小,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下 Oracle数据文件默认大小上限是32G,如果要数据文件大于32G,需要在 ...

  9. rails设置表单默认值amp;amp;隐藏表单

    需求: 用户没有登录时游客评论,需要游客输入用户名和评论内容:当用户已登录时,读取session获取用户名,隐藏输入用户名的表达,用户直接发表评论. 用户评论代码: <h2>Add a c ...

最新文章

  1. MySQL中MyISAM引擎与InnoDB引擎性能简单测试
  2. 06上半年网络工程师试题分类精讲.第一部分:计算机与网络知识(上午考试科目).第一章:计算机系统知识...
  3. python生成器应用中的一个要点
  4. kettle安装部署及远程执行
  5. 跑yolo3模型出的效果图_效果图和效果图设计到底有什么区别?区别大着呢,亲……...
  6. 点击cell动态修改高度动画
  7. 小数在内存中的存储表示
  8. STM32F1如何切换到不同的型号
  9. spring boot配置dubbo(XML)
  10. 2018批量打印开关_从阿迪达斯到国产品牌,感受3D打印技术掀起的运动鞋中底革命...
  11. python 模型 欺诈概率_python信用卡欺诈模型,最大似然参数设置/混淆矩阵
  12. 保持新投资技术先进性和保护既有投资的完美均衡 —— 成都地铁4号线二期PIS车地无线通信...
  13. 分享盒子直播软件.已测试,网络机顶盒看电视直播哪个软件好(最好用的三款免费直播软件分享)...
  14. 【verbs】ibv_query_qp()
  15. iOS 3D Touch之主屏幕快捷操作(Quick Actions)
  16. 微信公众号在打开的网站中直接进入苹果应用商店
  17. English digest
  18. 怎样实现模块间的参数传递?急急急!!!!!!!!!
  19. css 定位连线_前端css实现两点连线
  20. 【洛谷题解】P2356 弹珠游戏

热门文章

  1. 发现Tensorflow
  2. 介绍ML.NET——面向.NET开发人员的机器学习库
  3. python导入模块介绍_详解Python模块导入方法
  4. mysql左外连接条件_mysql – 左外连接的MAX条件
  5. vs code写ipynb怎么添加目录_用Django写招聘网站2——用户系统
  6. linux判断网站被采集,网站被采集的几个处理方法(非技术)
  7. linux nand 坏块_韦东山-NAND 上面都是坏块怎么办啊? - 百问网嵌入式问答社区
  8. 噪声产生原因_皮带输送机异常噪声的5种情况、减速机断轴的原因和解决方法...
  9. Referenced file contains errors (http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd).
  10. mysql索引 order by_MySQL 通过索引优化含ORDER BY的语句