zoukankan      html  css  js  c++  java
  • oracle唯一约束

    有重复值还可以唯一约束???都是空值就可以唯一约束??
    -----有重复值不能建唯一约束
    -----都是空值是可以唯一约束的。

    --------------------------------------------------------------------------
    --1.如果seq_id预先有重复值(非空的值有重复),是不能加唯一约束的
    --2.如果seq_id预先有多个空值(全部记录都是空值也能加),但非空的值都不重复,能加唯一约束
    --3.先加唯一约束,再插入seq_id为空的记录,这也是可以的

    --如果seq_id不插入空值,但无重复 ,有记录之后再加唯一约束
    drop table t_imp_test;
    create table t_imp_test(
      seq_id number(10),
      name varchar2(200),
      tel varchar2(200),
      dw  varchar2(200)
    );

    /*
    --3.先加唯一约束,再插入seq_id为空的记录,这也是可以的

    alter table t_imp_test add constraint const_t_imp_test_seq_id unique(seq_id);--先加约束

    insert into t_imp_test(name,tel,dw)---------------------------------------------执行可以通过
    select 'aa' name,'13780001256' tel,'易方达基金公司' dw from dual
    union all select 'bb' name,'' tel,'南方基金公司' dw from dual
    union all select 'cc' name,'13780001248' tel,'博时基金公司' dw from dual
    union all select 'dd' name,'13780008888' tel,'易方达基金公司' dw from dual
    ;

    select * from t_imp_test;

    */

    /*
    --1.如果seq_id预先有重复值(非空的值有重复),是不能加唯一约束的
    insert into t_imp_test(seq_id,name,tel,dw)
    select 111 seq_id,'aa' name,'13780001256' tel,'易方达基金公司' dw from dual
    union all select 111 seq_id,'bb' name,'' tel,'南方基金公司' dw from dual
    union all select 222 seq_id,'cc' name,'13780001248' tel,'博时基金公司' dw from dual
    union all select 111 seq_id,'dd' name,'13780008888' tel,'易方达基金公司' dw from dual
    ;

    select * from t_imp_test;

    alter table t_imp_test add constraint const_t_imp_test_seq_id unique(seq_id);---执行报错
    */

    /*
    --2.如果seq_id预先有多个空值,但非空的值都不重复,能加唯一约束
    insert into t_imp_test(seq_id,name,tel,dw)
    select 222 seq_id,'aa' name,'13780001256' tel,'易方达基金公司' dw from dual
    union all select null seq_id,'bb' name,'' tel,'南方基金公司' dw from dual
    union all select null seq_id,'cc' name,'13780001248' tel,'博时基金公司' dw from dual
    union all select null seq_id,'dd' name,'13780008888' tel,'易方达基金公司' dw from dual
    ;

    select * from t_imp_test;

    alter table t_imp_test add constraint const_t_imp_test_seq_id unique(seq_id);---执行通过

    insert into t_imp_test(seq_id,name,tel,dw)
    select null seq_id,'ee' name,'' tel,'南方基金公司' dw from dual
    union all select null seq_id,'ff' name,'13780001248' tel,'博时基金公司' dw from dual---seq_id为空也执行通过
    ;
    */

  • 相关阅读:
    关于C#中Environment.OSVersion判断操作系统及Win10上的问题
    C#各种数组直接的数据复制/转换
    移位操作<<和>>,是逻辑数字上的移动(和大端小端无关)
    log4net学习笔记
    链接错误——无法解析的外部符号 ConvertStringToBST
    当Thread.Sleep的暂停时间参数设置过小时,精度很差的解决方法
    Python发送邮件
    Python使用HTMLTestRunner运行所有用例并产生报告
    pandas学习笔记
    Python requests模块做接口测试
  • 原文地址:https://www.cnblogs.com/jiangqingfeng/p/9155971.html
Copyright © 2011-2022 走看看