Oralce 增加 删除 主键 索引

本文详细介绍了如何在Oracle数据库中添加和删除主键以及索引,包括创建主键约束和管理索引的方法,帮助提升数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

declare
v_key varchar2(500);
v_sql varchar2(500);
begin
   select max(cu.constraint_name) into v_key
    from user_cons_columns cu, user_constraints au
   where cu.constraint_name = au.constraint_name
   and au.constraint_type = 'P'
   and au.table_name = 'temp_table ';
   
   v_sql:='alter table temp_table drop constraint '||v_key||' cascade'; 
   execute immediate v_sql;
end;
/


--处理表 索引处理  temp_table 
declare
  v_key varchar2(500);
  v_num number;
  v_sql varchar2(500);
begin
  select count (t.index_name) into v_num from user_ind_columns t where t.table_name = 'temp_table ';
  if v_num >0 then
    select distinct (t.index_name) into v_key from user_ind_columns t where t.table_name = 'temp_table ';
       if v_key is not null then
         v_sql := 'drop index ' || v_key || '';
         execute immediate v_sql;
         v_sql :='create unique index U_temp_table  on temp_table (NM, QM,ID, KSSJ, JSSJ,TJWD)'; 
         execute immediate v_sql;
       end if;
   else
       v_sql :='create unique index U_temp_table  on JW_JG_GZLJGB (NM, QM,ID, KSSJ, JSSJ,TJWD)'; 
       execute immediate v_sql;
   end if;
end;
/


--处理 索引处理 (已经创建主键对象 需要删掉主键和索引)  temp_table 
declare
  v_key varchar2(500);
  v_num number;
  v_sql varchar2(500);
begin
  select count (t.index_name) into v_num from user_ind_columns t where t.table_name = 'temp_table';
  if v_num >0 then
    select distinct (t.index_name) into v_key from user_ind_columns t where t.table_name = 'temp_table ';
       if v_key is not null then
         v_sql := 'alter table temp_table drop constraint ' || v_key || '';
         execute immediate v_sql;
         v_sql :='create unique index U_temp_table on temp_table (DM,FSDXX,FSDSX,XS)'; 
         execute immediate v_sql;
       end if;
   else
       v_sql :='create unique index U_temp_table on temp_table (DM,FSDXX,FSDSX,XS)'; 
       execute immediate v_sql;
   end if;
end;
/

创建 主键 和约束

-- Create/Recreate primary, unique and foreign key constraints 
alter table temp_table add constraint P_temp_table  primary key DM, XS);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值