Oracle删除表主键语句

删除无名主键语句:

SELECT * FROM USER_CONS_COLUMNS WHERE TABLE_NAME = ‘表名‘;
ALTER TABLE 表名 DROP CONSTRAINT 主键名称;

上面语句需要手动,如何自动执行?看下面:

CREATE OR REPLACE FUNCTION DEL_TABLE_CONSTRAINT (tb_name       VARCHAR2,
                                                 field_name    VARCHAR2)
   RETURN NUMBER
IS
   con_count   NUMBER;
   con_name    VARCHAR2 (32);
BEGIN
   con_name := ‘‘;
   con_count := 0;

   SELECT COUNT (DISTINCT constraint_name)
     INTO con_count
     FROM user_cons_columns
    WHERE     table_name = UPPER (tb_name)
          AND column_name = UPPER (field_name)
          AND ROWNUM = 1;

   IF con_count > 0
   THEN
      SELECT DISTINCT constraint_name
        INTO con_name
        FROM user_cons_columns
       WHERE     table_name = UPPER (tb_name)
             AND column_name = UPPER (field_name)
             AND ROWNUM = 1;

      EXECUTE IMMEDIATE
         ‘alter table ‘ || tb_name || ‘ drop constraint ‘ || con_name;
   END IF;

   RETURN 0;
END;

这样执行

DECLARE
   a   NUMBER;
BEGIN
   a := DEL_TABLE_CONSTRAINT (‘表名‘, ‘字段名‘);
END;
/
时间: 2024-10-16 07:57:37

Oracle删除表主键语句的相关文章

批量删除 添加 表主键 sql-- 存储过程

sql 批量操作添加/ 删除 表主键 直接上代码把:  是存储过程哦 , GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[prc_name] (@nameinfo nvarchar(50) output)AS declare @Key NVARCHAR(MAX) --创建参数 返回创建主键declare @tab NVARCHAR(MAX) --创建参数 返回 表declare @tabs NVARCHAR(MAX

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

Oracle查询--增加--删除--修改主键

对Oracle表主键的操作,有四类:查询,增加,修改,删除 1.查询主键 /*查询某个表中存在的约束*/ select * from user_constraints where table_name='表名大写'; 查询结果显示约束类型,约束名称,不显示约束在哪个字段上 /*查询某个表各字段约束*/ select * from user_cons_columns where table_name='表名大写'; 查询结果显示约束名称,字段名称,不显示约束类型 /*查询某个表的主键约束*/ se

SQLITE数据表主键设置Id自增方法

SQLITE数据表主键设置Id自增方法 标签: sqliteintegerinsertnulltableapi 2010-01-12 08:39 35135人阅读 评论(8) 收藏 举报  分类: SQL(11)  版权声明:本文为博主原创文章,未经博主允许不得转载. 搞定了一个困扰许久的问题,原来sqlite中的主键也是可以设置为自增的:)方法就是声明为 INTEGER PRIMARY KEY 的字段可以自动增加.    网上查到资料说,从 SQLite 的 2.3.4 版本开始,如果将一个表

主表和子表主键设计

将主表主键设置为ID,另外将子表主键设置为AID,子表的外键ID和主表一样.那么当发生对主表记录进行删除操作,可以方便的对关联的子表数据一并删除! declare @selectStr nvarchar(1000) set @selectStr='delete from Bdrdrecord11 ' + @searchString+' delete from Bdrdrecords11 '+@searchString exec (@selectStr)

Oracle并行添加主键的方法

环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立. 1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 SQL> alter table t add constraint pk_t primary key (object_id) using index online parallel 2; alter table t add constraint pk_t primary key (object_id) u

Oracle系统表外键的更名

正在看的ORACLE教程是:Oracle系统表外键的更名. Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系.外键涉及到两个表,其中一个称之为父项表,另一个称之为子项表. 父项表(parent table)是参照约束的基础,即通过检查这张表的有效数据情况来判断约束是否成立,它是参照约束的条件,影响约束,而不受约束的任何影响. 子项表(child table)是参照约束的对象,当其发生变化,如有新数据输入时,通过比较父项表中的有效数

oracle 触发器实现主键自增

drop table book; --创建表 create table book( bookId varchar2(4) primary key, name varchar2(20) ); --创建序列 create sequence book_seq start with 1 increment by 1; --创建触发器 create or replace trigger book_trigger before insert on book for each row begin select

Oracle删除表、字段之前判断表、字段是否存在

这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ORA-00942:表或视图不存在 若在程序中执行该语句则会报异常,这就需要我们在删除表前先判断该表是否存在,若存在则删除. ? 1 2 3 4 5 6 7 8 9 10 11 DECLARE num NUMBER; BEGIN SELECT COUNT(1) INTO num FROM USER_