zoukankan      html  css  js  c++  java
  • Oracle修改主键约束

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

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

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

    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、主键约束和唯一键约束会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效或被删掉时,隐式创建的唯一索引会被删除。

  • 相关阅读:
    npm 操作
    vue 下拉框选中不显示的问题
    VUE项目中遇到的Bug总结
    Websocket练手
    Mysql 去重取最新的一条数据
    C# 一列数的规则如下:1、1、2、3、5、8、13..…...求第30位数是多少,用递归算法实现
    冒泡排序 升序 降序(笔试)
    Sql语句查询成绩大全(Mysql,sqlserver,oracle)常遇笔试题
    C# ,.net 对比两个List的方法 亲测
    C#当前时间加、减指定时间
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/9760576.html
Copyright © 2011-2022 走看看