网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle入门基本知识一点通.
.Oracle 数据库10g:自动共享内存.
.Oracle 锁简单介绍.
.ORACLE学习笔记--性能优化三.
.用JAVA实现ORACLE的文件上传,下载.
.Linux系统的防病毒方案.
.Ruby on Rails之Oracle应用(1).
.oracle N层认证.
.Oracle丰富认证体系 新增资深专家.
.数据库默认临时表空间.
.Oracle9i新特性-索引监视及注意事.
.PGA自动管理原理深入分析及性能调.
.在oracle中限制返回结果集的大小.
.Oracle面试时候的几个常见的技术.
.通过LEI技术实现NOTES与SQL2000数.
.W2k Server下Oracle 9iAS安装报告.
.Linux 数据库:SQL语法参考手册.
.Oracle数据操作和控制语言详解(1).
.甲骨文Sun联手 构建新10年战略伙.
.如何彻底删除Oracle(转载).

在已有冗余的表上加唯一约束

发表日期:2008-2-9



  SELECT * FROM emp a
  WHERE rowid > ANY
  (SELECT rowid FROM emp b
  WHERE a.ename = b.ename
  )
  可以找到冗余的数据
  今个发现还有一个比较简便的方法,如下使用 exceptions into exceptions;
  
  
    SQL> create table t ( a int, b int, c int );
    表已创建。
    SQL> insert into t select rownum,rownum+1,rownum+2 from all_objects where rownum <5;
    已创建4行。
    SQL> insert into t select *from t where rownum<3;
    已创建2行。
    SQL> commit;
    提交完成。
    SQL> select *from t;
        A     B     C
   ---------- ---------- ----------
        1     2     3
        2     3     4
        3     4     5
        4     5     6
        1     2     3
        2     3     4
    已选择6行。 SQL> create table exceptions(row_id rowid,
    2 owner varchar2(30),  3 table_name varchar2(30),
    4 constraint varchar2(30));
    表已创建。
    SQL> SQL> alter table t add constraint t_unique
    2 unique(a,b,c) exceptions into exceptions;
   alter table t add constraint t_unique
                  * ERROR 位于第 1 行: ORA-02299: 无法验证 (EPUSER.T_UNIQUE) - 未找到重复要害字
    SQL> create table dups
    2 as select *from t where rowid in (select row_id from exceptions);
    表已创建。
    SQL> select *from dups;
        A     B     C
   ---------- ---------- ----------
        1     2     3
        2     3     4
        1     2     3
        2     3     4
    SQL> select row_id from exceptions;
    ROW_ID
   ------------------
   AAAIEJAAKAAAyMSAAA
   AAAIEJAAKAAAyMSAAE
   AAAIEJAAKAAAyMSAAB
   AAAIEJAAKAAAyMSAAF
    SQL> delete from t where rowid in ( select row_id  2 from exceptions );
    已删除4行。
    SQL> insert into t select distinct * from dups;
    已创建2行。
    SQL> SQL> commit;
    提交完成。
    SQL> select *from t;
        A     B     C
   ---------- ---------- ----------
        3     4     5
        4     5     6
        1     2     3
        2     3     4
上一篇:利用散列法来处理大的静态统一表格 人气:707
下一篇:使用插值在序列中查找遗漏的值 人气:595
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐