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

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

Oracle修改主键约束的更多相关文章

  1. Oracle删除主键约束的同时删除索引

    继续昨天的折腾(Oracle修改主键约束),删掉主键约束后,发现唯一索引并未删掉.仔细看了下,主键约束跟唯一索引名称不一样,这说明是先创建了唯一索引,后创建的主键约束.我们来试验下: SQL> ...

  2. SQL 修改主键约束

    原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用. --修改主键约束用SQL --获取主键约束名字 declare @csname varchar ...

  3. ORACLE中主键约束跟唯一索引的区别

    分类: DB 2011-12-03 21:34 611人阅读 评论(0) 收藏 举报 oracleconstraintsimmutableusertabledomain 1.  分别用两种方法创建主键 ...

  4. Oracle的主键约束、唯一约束与外键约束

    http://www.shangxueba.com/jingyan/122163.html主键:  1.主键约束: 一个表只能有一个主键约束.主键可以是单个字段,也可以是多个字段.无论是哪种情况,其所 ...

  5. Oracle之主键的创建、添加、删除操作

    一.创建表的同时创建主键约束 1.1.无命名 SQL)); Table created SQL> select table_name,index_name from user_indexes w ...

  6. Oracle主键约束、唯一键约束、唯一索引的区别

    一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约束.索引和键的混淆通常是由于数据库使用索 ...

  7. db2 将原表列notnull属性修改为null属性的方法 (查看主键约束,唯一约束去syscat.tabconst)

    好久没机会写点东西了,今天把自己遇到的一个小问题跟大家分享一下如何修改db2数据库表中列的属性--将列的非空属性改为允许空的属性,修改数据表的某一列属性其实很简单但是里面有需要细节需要dba注意,毕竟 ...

  8. 【数据库_Mysql】MySQL—修改表时给表添加联合主键约束

      添加语法如下: “ALTER TABLE table_name ADD CONSTRAINT pk_table_name PRIMARY KEY(列名1,列名2):” [示例1]假设订房信息表(O ...

  9. Oracle数据库,非空约束、主键约束、外键约束、唯一约束

    非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复(类型:Uniqu ...

随机推荐

  1. Metasploit没有db_autopwn命令的解决办法

    将附件db_autopwn.rp 拷贝到/opt/framework3/msf3/plugins/PS:db_autopwn.rp 下载地址:http://dl.vmall.com/c04w8czlc ...

  2. 完整的保存onetab的书签信息

    之前在百度上找怎么完整的保存onetab的书签信息,没找到答案,于是乎上了google,在stackoverflow上找到了一个相关的答案 How to restore OneTab list of ...

  3. poj 3411 Paid Roads很水的DFS

    题意:给你N 城市和M条道路,每条道路要付的钱,但是如果你在这个道路上你可以付其他道路的钱(跟走到的时候去的话不一样),问你从1走到N最少话费是多少. 直接DFS搜. 链接http://poj.org ...

  4. poj 3348 Cows 凸包 求多边形面积 计算几何 难度:0 Source:CCC207

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7038   Accepted: 3242 Description ...

  5. php 请求url获取状态码

    function get_http_code($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); //设置URL c ...

  6. shell getopts学习

    #!/bin/bash while getopts i:vh name do case $name in i) opt=1 echo $OPTARG;; v) opt=2 echo 2;; h) op ...

  7. L154

    Several possessions of the late physicist's Stephen Hawking will be included in an upcoming auction ...

  8. Linux下的软件的安装

     一.yum相关介绍及命令 [1] 用来管理软件的一个命令.通过该命令完成对软件的下载.卸载等操作. [2] 命令:(必须在yum搭建成功后才能正常运行) yum  clean all      清楚 ...

  9. 下拉列表框DropDownList绑定Dictionary泛型类

    DropDownList绑定Dictionary泛型类 定义一个Dictionary泛型类 /// <summary>    /// 产品类型    /// </summary> ...

  10. 概念:GNU构建系统和Autotool

    经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉.事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件. ...