[20160526]建立主键问题.txt

简介: [20160526]建立主键问题.txt --生产系统有1个表没有主键,要求建立发现无法建立,有重复.而且这个索引查询是需要. --实际上可以限制以后的记录不再重复,以前我自己也遇到过,做一个记录.

[20160526]建立主键问题.txt

--生产系统有1个表没有主键,要求建立发现无法建立,有重复.而且这个索引查询是需要.
--实际上可以限制以后的记录不再重复,以前我自己也遇到过,做一个记录.

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

create table t (id int,name varchar2(100));
insert into t values(1,'AAAAA');
insert into t values(2,'BBBBB');
insert into t values(3,'CCCCC');
insert into t values(4,'DDDDD');
insert into t values(5,'EEEEE');
commit;
SCOTT@book> insert into t values(3,'ccccc');
1 row created.

SCOTT@book> commit ;
Commit complete.

2.现在有重复:

SCOTT@book> create unique index pk_t on t (id);
create unique index pk_t on t (id)
                            *
ERROR at line 1:
ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found

--无法建立唯一索引.先建立索引:

SCOTT@book> create  index pk_t on t (id);
Index created.

SCOTT@book> alter table t add constraint pk_t primary key (id) ;
alter table t add constraint pk_t primary key (id)
                             *
ERROR at line 1:
ORA-02437: cannot validate (SCOTT.PK_T) - primary key violated
--无法加入约束.因为有重复记录.

SCOTT@book> alter table t add constraint pk_t primary key (id) enable novalidate;
Table altered.

SCOTT@book> insert into t values(1,'ccccc');
insert into t values(1,'ccccc')
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PK_T) violated

SCOTT@book> @ &r/desc t
Name  Null?    Type
----- -------- ----------------
ID             NUMBER(38)
NAME           VARCHAR2(100)

--虽然ID的定义还没有not null,但是插入空值:

SCOTT@book> insert into t values(null,'ccccc');
insert into t values(null,'ccccc')
                     *
ERROR at line 1:
ORA-01400: cannot insert NULL into ("SCOTT"."T"."ID")

--剩下重复的记录的问题开发自己解决.

目录
相关文章
|
Linux Windows
[20170925]建立文件分配大小.txt
[20170925]建立文件分配大小.txt --//有时候工作需要建立一个文件.一般在linux下使用dd.总结一下其他方法: 1.方法1: $ cat a.c #include #include #include #include #inc...
787 0
|
关系型数据库 索引
[20170427]唯一索引与约束注意的地方.txt
[20170427]唯一索引与约束注意的地方.txt --//昨天看书Apress.Expert.Oracle.Indexing.and.Access.Paths.Maximum.
951 0
|
SQL Shell 测试技术
[20161023]为什么以前可以这样的表.txt
[20161023]为什么以前可以这样的表.txt --上午看https://oracleblog.org/working-case/ora-01401-impdp-same-character/ CREATE TABLE ASS_ACC...
798 0
|
索引 关系型数据库 Oracle
[20160704]NULL与主外键问题.txt
[20160704]NULL与主外键问题.txt --主外键的问题主要出现在阻塞等情况,有许多极端dba认为应该取消这个约束.当然从使用的角度出发有总比没有好.只是不要过度滥用.
802 0
|
SQL Oracle 关系型数据库
[20151231]主外键与空表.txt
[20151231]主外键与空表.txt --主外键的测试例子很多,今天做一个特别的,外部键表为空,也会出现阻塞吗?测试看看。 1.建立环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VE...
939 0
|
SQL 关系型数据库 Oracle
[20151231]主外键与空表(12c).txt
[20151231]主外键与空表(12c).txt --主外键的测试例子很多,今天做一个特别的,外部键表为空,也会出现阻塞吗?测试看看。 1.建立环境: SCOTT@test01p> @ver1 PORT_STRING                    V...
841 0
|
Oracle 关系型数据库
[20151024]关于ctas与建立主键.txt
[20151024]关于ctas与建立主键.txt --前一阵子别人问的问题,就是ctas是否可以建立主键,对于这种情况平时不这么建立,我给看看文档。 --平时我建立测试表 create table t as select rownum id ,'test' n...
935 0
|
物联网 索引
[20151008]索引组织表上创建BITMAP索引.txt
[20151008]索引组织表上创建BITMAP索引.txt --IOT 是一种特殊的索引结构,使用它能够解决特定场合的应用问题,但是在许多应用中很少使用,更多的是使用堆表。
963 0
|
物联网 索引
[20150626]建立索引pctfree=0.txt
[20150626]建立索引pctfree=0.txt --昨天看了链接: https://richardfoote.wordpress.com/2015/06/25/quiz-time-why-do-deletes-cause-an-index-to-g...
695 0
|
索引
[20140714]关于在那些字段建立索引的问题
[20140714]关于在那些字段建立索引的问题.txt 前几天有人问我,如何确定在那些字段建立索引的问题,我的方法很简单,通过awr报表可以来确定一部分索引的建立,应用程序绑定做的很 好,方法很简单,可以使用toad的SGA trace,组合一些查询条...
661 0