Oracle判断表、列、主键是否存在的方法

 更新时间:2018年04月24日 15:04:01   作者:特务小强  
这篇文章主要介绍了Oracle判断表、列、主键是否存在的方法,下面是小编之家小编给大家带来的一些判断方法和大家分享下

在编写程序时,数据库结构会经常变化,所以经常需要编写一些数据库脚本,编写完成后需发往现场执行,如果已经存在或者重复执行,有些脚本会报错,所以需要判断其是否存在,现在我就把经常用到的一些判断方法和大家分享下:

一。判断Oracle表是否存在的方法

declare tableExistedCount number;  --声明变量存储要查询的表是否存在
begin
   select count(1) into tableExistedCount from user_tables t where t.table_name = upper('Test'); --从系统表中查询当表是否存在
   if tableExistedCount = 0 then --如果不存在,使用快速执行语句创建新表
     execute immediate
     'create table Test --创建测试表
     (ID number not null,Name = varchar2(20) not null)';
   end if;
end;

二。判断Oracle表中的列是否存在的方法

declare columnExistedCount number;  --声明变量存储要查询的表中的列是否存在
begin 
    --从系统表中查询表中的列是否存在
    select count(1) into columnExistedCount from user_tab_columns t where t.table_name = upper('Test') and t.column_name = upper('Age');   
    --如果不存在,使用快速执行语句添加Age列
    if columnExistedCount = 0 then 
      execute immediate
      'alter table Test add age number not null';
    end if;
end;

DECLARE
num NUMBER;
BEGIN
SELECT COUNT(1)
INTO num
from cols
where table_name = upper('tableName')
and column_name = upper('columnName');
IF num > 0 THEN
execute immediate 'alter table tableName drop column columnName';
END IF;
END;

三。判断Oracle表是否存在主键的方法

declare primaryKeyExistedCount number;  --声明变量存储要查询的表中的列是否存在
begin 
    --从系统表中查询表是否存在主键(因一个表只可能有一个主键,所以只需判断约束类型即可)
    select count(1) into primaryKeyExistedCount from user_constraints t where t.table_name = upper('Test') and t.constraint_type = 'P';   
    --如果不存在,使用快速执行语句添加主键约束
    if primaryKeyExistedCount = 0 then 
    execute immediate
    'alter table Test add constraint PK_Test_ID primary key(id)';
    end if;
end;

四。判断Oracle表是否存在外键的方法

declare foreignKeyExistedCount number;  --声明变量存储要查询的表中的列是否存在
begin 
    --从系统表中查询表是否存在主键(因一个表只可能有一个主键,所以只需判断约束类型即可)
    select count(1) into foreignKeyExistedCount from user_constraints t where t.table_name = upper('Test') and t.constraint_type = 'R' and t.constraint_name = '外键约束名称';   
    --如果不存在,使用快速执行语句添加主键约束
    if foreignKeyExistedCount = 0 then 
      execute immediate
      'alter table Test add constraint 外键约束名称 foreign key references 外键引用表(列)';
    end if;
end;

总结

以上所述是小编给大家介绍的Oracle判断表、列、主键是否存在的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • oracle中ORA-12514问题解决方法

    oracle中ORA-12514问题解决方法

    安装了Oracle数据库,以前都是安装好就可以连接了,可是今天出现了一点小意外,遇到ORA-12514错误问题,今天就来介绍一下解决方法,感兴趣的可以了解一下
    2023-05-05
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办

    [Oracle] 解析在没有备份的情况下undo损坏怎么办

    Oracle在运行中很不幸遇到undo损坏,当然最好的方法是完全恢复,但如果是在没有备份的情况下undo损坏怎么办?以下就为大家介绍出现这种情况的解决办法,需要的朋友参考下
    2013-07-07
  • oracle中的decode的使用介绍

    oracle中的decode的使用介绍

    这篇文章主要介绍了oracle中的decode函数的一些使用小技巧,需要的朋友可以参考下
    2013-09-09
  • Oracle数据库产重启服务和监听程序命令介绍

    Oracle数据库产重启服务和监听程序命令介绍

    大家好,本篇文章主要讲的是Oracle数据库产重启服务和监听程序命令介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Oracle中时间日期转化函数to_date和to_char的具体使用

    Oracle中时间日期转化函数to_date和to_char的具体使用

    时间日期转化函数在工作中经常可以使用的到,本文主要介绍了Oracle中时间日期转化函数to_date和to_char的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-05-05
  • Oracle表空间查看sql使用情况

    Oracle表空间查看sql使用情况

    我们在日常工作中查看表空间的使用情况大多数都是使用DBA。下面脚本之家小编给大家带来了oracle表空间查看sql使用情况的方法步骤,需要的童鞋参考下
    2016-05-05
  • Oracle 实现将查询结果保存到文本txt中

    Oracle 实现将查询结果保存到文本txt中

    这篇文章主要介绍了Oracle 实现将查询结果保存到文本txt中的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Windows Oracle常见服务介绍

    Windows Oracle常见服务介绍

    注:SID - 数据库标识 HOME_NAME - Oracle Home名称,如OraHome92、OraHome81
    2009-05-05
  • oracle中文乱码的解决方法

    oracle中文乱码的解决方法

    这篇文章主要介绍了oracle中文乱码的解决方法,服务器系统是linux,支持中文显示,数据库字符集是zhs16gbk,往数据库里建表,插入中文数据,sqlplus 连接到数据库,中文显示乱码,需要的朋友可以参考下
    2014-03-03
  • Oracle rac案例讲解

    Oracle rac案例讲解

    这篇文章主要介绍了Oracle rac案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论