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