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为空也执行通过
    ;
    */

  • 相关阅读:
    华章IT图书书讯(2011年第8期)
    iPhone游戏开发实践指南
    【北京讲座】Android系统Framework层源码分析(2011.09.24)
    深入理解Android
    你学或不学,Java就在那里,不离不弃
    近百本精品图书全部免费赠送——仅面向学生
    极限编程(Extreme Programming, XP)
    对任何希望深入理解C#的程序员来说,这本书都是不容错过的经典书籍
    C# 文件操作(转)
    一些数据格式化Eval( " ")和DataBinder.Eval(Container.DataItem, " ")的区别及用法
  • 原文地址:https://www.cnblogs.com/jiangqingfeng/p/9155971.html
Copyright © 2011-2022 走看看