精华内容
下载资源
问答
  • oracle数据库 主键索引重建 alter table table_name drop primary key; alter table table_name add constraint pk_index_name primary key(row_name);

    oracle 数据库 主键索引重建

    alter table table_name drop primary key;

    alter table table_name add constraint pk_index_name primary key(row_name);

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

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

    SQL> create unique index PK_T_INVITEE_RECORD_TEST on T_INVITEE_RECORD_TEST(INVITEEMSISDN, INVITERMSISDN, ACTIVITYID) tablespace TBS_VCODE_IDX;
     
    Index created
    SQL> alter table T_INVITEE_RECORD_TEST add constraint SYS_C00133333 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID);
     
    Table altered
    

      这时候如果删除主键约束SYS_C00133333的话,唯一索引PK_T_INVITEE_RECORD_TEST不会自动删除:

    SQL> alter table T_INVITEE_RECORD_TEST drop constraint SYS_C00133333;
     
    Table altered
    

     

      这时候如果我们再次创建新的主键约束的话,有两种情况:一是不指定索引表空间(不建议),那么可以创建成功,但唯一索引被丢到数据表空间了;二是指定索引表空间,很明显,Oracle不会让你创建的,因为唯一索引已经存在,当然你也可以把主键约束的名字起得跟已存在的唯一索引的名字不一样的,但那样也不是我们想要的结果,因为老唯一索引必须要删掉。我们先看第二种情况:

    SQL> alter table T_INVITEE_RECORD_TEST add constraint PK_T_INVITEE_RECORD_TEST PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID,ACCEPTINVITETIME) using index tablespace TBS_VCODE_IDX;
     
    alter table T_INVITEE_RECORD_TEST add constraint PK_T_INVITEE_RECORD_TEST PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID,ACCEPTINVITETIME) using index tablespace TBS_VCODE_IDX
     
    ORA-00955: 名称已由现有对象使用
     
    SQL> alter table T_INVITEE_RECORD_TEST add constraint SYS_C00133333 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID,ACCEPTINVITETIME) using index tablespace TBS_VCODE_IDX;
     
    Table altered
    

      我们的目的是修改唯一索引,新增一个ACCEPTINVITETIME字段,现在老的唯一索引仍存在,会导致我们新索引失效,不同的ACCEPTINVITETIME值仍无法插入。我们先删掉主键约束,再来看第一种情况:

    SQL> alter table T_INVITEE_RECORD_TEST drop constraint SYS_C00133333;
     
    Table altered
     
    SQL> alter table T_INVITEE_RECORD_TEST add constraint SYS_C00133333 PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID,ACCEPTINVITETIME);
     
    Table altered
    

      我们看到唯一索引建到数据表空间去了,作为一个专业人士,这是很不专业的。那么怎么解决掉老唯一索引呢?很简单,drop掉,你可以直接用

    drop index PK_T_INVITEE_RECORD_TEST;
    

      但更简单的是使用级联:

    alter table T_INVITEE_RECORD_TEST drop constraint SYS_C00133333 cascade drop index;
    

      下面给出专业的更新和回滚语句:

      新增联合主键字段ACCEPTINVITETIME

    alter table T_INVITEE_RECORD_TEST drop primary key cascade drop index;
    alter table T_INVITEE_RECORD_TEST modify ACCEPTINVITETIME not null;
    comment on column T_INVITEE_RECORD_TEST.ACCEPTINVITETIME is '接受邀请时间(联合主键)';
    alter table T_INVITEE_RECORD_TEST add constraint PK_T_INVITEE_RECORD_TEST PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID,ACCEPTINVITETIME) using index tablespace TBS_VCODE_IDX;
    

      回滚:

    alter table T_INVITEE_RECORD_TEST drop constraint PK_T_INVITEE_RECORD_TEST;
    alter table T_INVITEE_RECORD_TEST add constraint PK_T_INVITEE_RECORD_TEST PRIMARY KEY (INVITEEMSISDN, INVITERMSISDN, ACTIVITYID) using index tablespace TBS_VCODE_IDX;
    alter table T_INVITEE_RECORD_TEST modify ACCEPTINVITETIME null;
    comment on column T_INVITEE_RECORD_TEST.ACCEPTINVITETIME is '接受邀请时间'; 
    
    展开全文
  • --删除主键 ALTER TABLE jw_jxrw_wxlsrwkcb DROP CONSTRAINT PK_JW_...--删除索引 drop index PK_JW_JXRW_WXLSRWKCB;--添加主键 -- Create/Recreate primary alter table jw_jxrw_wxlsrwkcb add constraint PK_JW_
    --删除表主键
    ALTER TABLE jw_jxrw_wxlsrwkcb DROP CONSTRAINT PK_JW_JXRW_WXLSRWKCB;
    --删除索引
    drop index PK_JW_JXRW_WXLSRWKCB;
    --添加主键
    -- Create/Recreate primary
    alter table jw_jxrw_wxlsrwkcb add constraint PK_JW_JXRW_WXLSRWKCB primary key(WXLSRWKC_ID);
    --添加 索引
    -- Create/Recreate indexes 
    create unique index PK_JW_JXRW_WXLSRWKCB on JW_JXRW_WXLSRWKCB (WXLSRWKC_ID)
      tablespace ZF
      pctfree 10
      initrans 2
      maxtrans 255
      storage
      (
        initial 192K
        next 1M
        minextents 1
        maxextents unlimited
      );


    展开全文
  • 主键索引和普通索引的最大差别是:主键索引不能有空值和重复值;一个表里只能有一个主键索引,普通索引可以有多个。 #Oracle创建普通索引 CREATE INDEX index_emp_...#Oracle创建主键索引 ALTER TABLE emp_test A...

    主键索引和普通索引的最大差别是:主键索引不能有空值和重复值;一个表里只能有一个主键索引,普通索引可以有多个。

    #Oracle创建普通索引
    CREATE INDEX index_emp_deptno ON emp_test(deptno);
    #Oracle删除普通索引
    drop INDEX index_emp_deptno ;
    #Oracle创建主键索引
    ALTER TABLE emp_test ADD CONSTRAINT pk_emp_deptno PRIMARY KEY (deptno);
    #Oracle删除主键索引
    ALTER TABLE emp_test DROP CONSTRAINT pk_emp_deptno;
    
    #查看当前用户的索引详细信息
    SELECT * FROM user_indexes
    

    与MySQL的创建语法有所不同

    mysql> alter table account add primary key (account_number);
    
    展开全文
  • 作用:用来保证数据完整性个数:主键只能有一个索引:作用:是提高查询排序的速度个数:一个表可以有多个索引常用索引类型:Non-unique(非唯一索引,常用)Unique(唯一索引,该字段没有重复值,但可以有一个空值)...
  • 先用DROP TABLE A;把表A删除了 再用建表语句 create table GOMaterialMain (  ... 请问各位,在没有表的情况下,如何删除原表对应的主键索引? 谢谢!
  • oracle按照主键索引查询不到数据

    千次阅读 2015-09-16 22:49:29
    oracle奇怪问题,按照主键查询不到数据,ora-08102:未找到索引关键字
  • oracle本身没有主键自增概念,所以在insert的时候,面对主键自增就不方便。但是oracle中有sequence可以获取自增的值,用法如下: create sequence BS_CHARGESTATION_SEQ increment by 1 start with 4000 ...
  • ORACLE:主键索引更换表空间

    千次阅读 2010-03-18 20:09:00
    Oracle 中,对于已经建好的主键,是自动创建索引的,并且索引是创建到当前的表空间中的,如果要将索引更换到其它表空间,可以使用如下的方法,超简单: alter index index_aaa rebuild tablespace newtablespace...
  • 有一次Oracle插入数据冲突,需要删除旧数据再重新插入,但是在想要根据主键删除旧的行数据时发现找不到主键索引所包含的列名。 select column_name from dba_ind_columns where index_name = 'SYS_C0079903' and ...
  • 删除主键,则主键约束和对应的唯一索引删除了。这是我们经常见到的现象。发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:创建主键约束时,检查该主键字段上是否...
  • Oracle添加主键删除主键、修改主键

    万次阅读 多人点赞 2019-04-01 16:48:43
    二、回归主题,主键的添加、删除等操作 1.有命名主键 1)有命名主键的添加 2)有命名主键删除 3)有命名主键的修改 2.无命名主键 1)无命名主键的创建 2)无命名主键删除 3)无命名主键的修改 附加: ...
  • oracle 数据库 主键索引重建

    千次阅读 2019-03-27 18:03:45
    oracle数据库 主键索引重建 alter table table_name drop primary key; alter table table_name add constraint pk_index_name primary key(row_name);
  • Oracle数据库中创建主键索引,索引列反序 表结构如下: create table test ( id number, name varchar2(20) ); 主键创建如下: alter table test add constraint pk_test primary key(id) using index ...
  • oracle主键索引

    2019-04-24 09:42:00
    作用:用来保证数据完整性个数:主键只能有一个索引:作用:是提高查询排序的速度个数:一个表可以有多个索引常用索引类型:Non-unique(非唯一索引,常用)Unique(唯一索引,该字段没有重复值,但可以有一个空值)...
  • oracle 主键 /索引

    2010-05-26 18:41:00
    删除主键,则主键约束和对应的唯一索引删除了。这是我们经常见到的现象。 发出一个创建主键的sql,oracle其实执行了两步:创建主键约束、创建/关联 唯一索引。步骤是这样的:创建主键约束时,检查该主键字段上...
  • oracle10g中删除主键约束后,在插入重复数据时候仍然报“ORA-00001”错误。 二、原因 Oracle在的10g版本中对内部函数"atbdui"进行了调整,导致在删除约束的时候无法删除用户创建的索引。这个现象被Oracle分类到...
  • oracle 创建主键反向索引

    千次阅读 2014-11-02 17:27:25
    前言:今天在学习oracle索引,看到chu
  • 实际开发中,在创建表主键约束的时候,通常会级联创建唯一索引。... 可以发现主键删除了,但是唯一索引依旧存在,因此如果插入重复的数据,还是会报违反约束的错误 处理方法:  在删除约束的时候需要显示的
  • 在创建主键的同时会生成对应的唯一索引主键在保证数据唯一性的同时不允许为空, 而唯一索引可以有一个为空的数据项,一个表中只能有一个主键,但是一个主键可以有多个字段,一个表中可以有多个唯一索引。 联合...
  • 1、在删除索引时,提示ORA-02429:无法删除用于强制唯一/主键索引,如下图所示: 2、主键唯一索引,不允许单独删除而保留主键约束,但是可以保留唯一索引单独删除主键约束。因此要想删除引唯一索引,只能先删除...
  • Oracle 添加主键索引

    2013-08-16 16:50:00
    数据的主键索引一般情况下都是必须的,特别是表有大量数据的时候,索引主键更是必不可少,这样可以提供数据的查询效率; 一、创建表的同时创建主键约束 (1)无命名 create table student ( studentid int ...
  • Oracle主键约束和主键索引的重命名

    千次阅读 2014-09-16 19:53:28
    Oracle版本: SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production PL/SQL Release 9.2....
  • oracle新增、删除索引以及主键修改

    千次阅读 2020-03-03 17:19:28
    --根据索引名,查询表索引字段 select * from user_ind_columns where index_name='索引名'; --根据表名,查询一张表的索引 select * from user_indexes where table_name='表名'; --根据索引名,查询属于哪张表 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,187
精华内容 27,274
关键字:

oracle如何删除主键索引