项目需求,有张表,原有三个联合主键,现在需要再加一个字段进去,而恰恰这个字段可以为空的。去数据库捞了一把,还好数据都不为空:

SQL> select count(*) from t_wlf_record t where t.acceptinvitetime is null;

  COUNT(*)
----------

  那么我们需要先把这个字段修改为非空字段:

alter table T_WLF_RECORD modify ACCEPTINVITETIME not null;

  接着才能修改主键约束,约束无法直接修改,只能先删后插:

alter table T_WLF_RECORD drop constraint SYS_C0018888;
alter table T_WLF_RECORD add constraint PK_T_WLF_RECORD PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID, ACCEPTINVITETIME);

  最后把注释改下:

comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间(联合主键)';

  作为一个专业人员,我们应该把回滚语句也写好:

alter table T_WLF_RECORD drop constraint PK_T_WLF_RECORD;
alter table T_WLF_RECORD add constraint SYS_C0018888 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID);
alter table T_WLF_RECORD modify ACCEPTINVITETIME null;
comment on column T_WLF_RECORD.ACCEPTINVITETIME is '接受邀请时间';

  最后总结下:约束的作用是保证数据的唯一性和完整性,比如主键约束你作为主键的字段不能为空,唯一约束你不能插入相同数据。具体区分如下:

  1、主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空,都不能有重复数据;

  2、主键约束和唯一键约束会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效或被删掉时,隐式创建的唯一索引会被删除。

最新文章

  1. saltstack命令执行过程
  2. 阻塞非阻塞,同步异步四种I/O方式
  3. MapReduce实例浅析
  4. AngularJS——karma的安装
  5. 学习smali
  6. OC基础(14)
  7. Package inputenc Error: Unicode char \u8: not set up for use with LaTeX.
  8. MPMoviePlayerController 视频播放器—IOS开发
  9. 深入理解ClassLoader(五)—类的卸载
  10. poj 2312 Battle City【bfs+优先队列】
  11. cocos2dx ——屏幕适配
  12. 应用 Valgrind 发现 Linux 程序的内存问题(转)
  13. 解决Django + DRF:403 FORBIDDEN:CSRF令牌丢失或不正确,{"detail":"CSRF Failed: CSRF cookie not set."}
  14. kubernetes环境搭建
  15. VBA续嘘嘘——宏技巧集绵
  16. 经典JS
  17. libevent安装方法
  18. HDUOJ----1301 Jungle Roads
  19. thinkphp+redis实现秒杀,缓存等功能
  20. noip模拟题《迷》enc

热门文章

  1. 执行Maven install或Maven test命令时控制台输出乱码的解决办法
  2. IOS UI-控制器的创建和控制器的View的创建
  3. Comprehensive Python Cheatsheet
  4. pip 使用总结
  5. 华为EPON OLT开局配置
  6. hdu 6063 RXD and math(快速幂)
  7. 前台cookie的操作
  8. jstack 分析程序性能
  9. Spring整合Hibernate:1、annotation方式管理SessionFactory
  10. 设置tableview 右侧 索引字体的大小