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

作者:特务小强 时间:2023-07-22 19:13:06 

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

一。判断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判断表、列、主键是否存在的方法,希望对大家有所帮助

来源:https://www.cnblogs.com/tewuapple/archive/2018/04/24/8929546.html

标签:sql,主键,表,列,存在
0
投稿

猜你喜欢

  • Python类中__init__() 和self的详细解析

    2021-04-22 22:05:06
  • Django如何实现防止XSS攻击

    2022-04-13 10:52:39
  • python中unittest框架应用详解

    2023-05-26 14:27:42
  • MySQL数据库之union,limit和子查询详解

    2024-01-16 08:15:29
  • vue 二维码长按保存和复制内容操作

    2024-04-27 16:04:39
  • Python 列表反转显示的四种方法

    2021-07-21 02:41:31
  • Python自动化测试笔试面试题精选

    2021-05-17 03:32:59
  • 对python cv2批量灰度图片并保存的实例讲解

    2022-06-11 18:21:36
  • python关闭占用端口方式

    2022-03-26 14:10:53
  • 详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    2022-06-23 16:42:41
  • 页面加载对访问的影响

    2009-10-30 18:54:00
  • python3中eval函数用法使用简介

    2023-08-12 02:28:48
  • python实现会员管理系统

    2023-11-13 19:44:46
  • Python 模拟员工信息数据库操作的实例

    2024-01-20 03:42:04
  • Python PyQt5模块实现窗口GUI界面代码实例

    2023-11-03 09:43:08
  • PHP attributes()函数讲解

    2023-06-04 09:33:02
  • JavaScript中判断的优雅写法示例

    2024-04-10 10:43:46
  • python调用外部程序的实操步骤

    2021-09-11 10:39:37
  • asp如何限制重复订阅邮件或重复投票?

    2010-06-09 18:48:00
  • php实现表单多按钮提交action的处理方法

    2024-05-11 10:10:27
  • asp之家 网络编程 m.aspxhome.com