Oracle判断表、列、主键是否存在的方法
在编写程序时,数据库结构会经常变化,所以经常需要编写一些数据库脚本,编写完成后需发往现场执行,如果已经存在或者重复执行,有些脚本会报错,所以需要判断其是否存在,现在我就把经常用到的一些判断方法和大家分享下:
一.判断Oracle表是否存在的方法
declare tableExistedCount number; --声明变量存储要查询的表是否存在beginselect 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;
我们需要在删除字段前先判断该字段是否存在,若存在则删除,否则会报错
DECLAREnum NUMBER;
BEGINSELECT COUNT(1)INTO numfrom colswhere table_name = upper('tableName')and column_name = upper('columnName');IF num > 0 THENexecute immediate 'alter table tableName drop column columnName';END IF;
END;
我们需要在添加字段前先判断该字段是否存在,若不存在则添加,否则会报错
DECLAREnum NUMBER;
BEGINSELECT COUNT(1)INTO numfrom colswhere table_name = upper('tableName')and column_name = upper('columnName');IF num > 0 THENexecute 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数据库表的主键,Oracle中查看所有的表,用户表,列名,主键,外键...
在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...
- Oracle heap 表的主键 dump 分析
1. 创建heap 表:create table t1 (id char(10) primary key,a1 char(10),a2 char(10),a3 char(10)); SQL> s ...
- oracle 创建表定义主键,Oracle 学习----:创建表(主键自增)
一.创建表 create table testTable ( Id numbere, name varchar2(100), age number, createTime date, primary ...
- oracle设置表的主键和外键,Oracle中给表添加主键、外键
1.创建表的同时创建主键约束 (1)无命名 create table student ( studentid int primary key not null, studentname varchar ...
- oracle查询某表是否存在,oracle判断表中某记录是否存在的方法
很多人喜欢用这样的方法来判断是否存在记录: select count(*) into t_count from t where condition; if t_count> 0 then ... ...
- oracle表违反主键约束,主键/约束/事务/表关系 Oracle
1:创建一个主键 --创建一个表,有主键 create table studs( id varchar(32) primary key, name varchar(30) ); --主键也是数据库的对 ...
- oracle查询一张表的主键,Oracle查询表主键、外键
Oracle查询表主键.外键 1. 查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexe ...
- oracle中设置表的主键字段为自增序列(实例)
oracle中设置表的主键字段为自增序列(实例) 1.首先创建一个表(如日志表) //删除库表中存在的日志表 drop table S_LOG_INFO cascade constraints; // ...
- oracle 如何获取表的主键列名,如何获取表的所有列名
获取表的主键列名 SQL select * from user_cons_columns where constraint_name = (select con ...
- oracle怎么查看表的唯一约束,查询(看)表的主键、外键、唯一性约束和索引
--查找表的所索引(包括索引名,类型,构成列: SELECT T.*, I.INDEX_TYPE FROM USER_IND_COLUMNS T, USER_INDEXES I WHERE T.IND ...
最新文章
- 机器学习开源项目Top10
- CSMA/CD在全双工和半双工模式下的区别
- linux 二级域名设置
- vim ctags java源码_如何使用vim的插件Ctags查看Linux源码
- c#ovalshape_How to: Draw Shapes with the OvalShape and RectangleShape Controls (Visual Studio)
- AO3414相关技术资料
- android 输入模糊匹配_Android 模糊搜索
- Python笔记4:控制流
- banner图片通用设置
- 《Android编程权威指南(第三版)》第五章挑战练习Demo
- 尤雨溪:重头来过的 Vue3 带来了什么?
- 数学向量 java,数学向量和旋转(Topdown java game dev – physics problem)
- 阿里云申请和部署项目
- Arduino开发:网页控制ESP8266三色LED灯闪烁
- Learning to See in the Dark
- c语言设计奥运奖牌管理系统,求一个用C语言编程的奥运奖牌管理系统
- SpringCloud Alibaba 实战之《限流与熔断:Sentinel 在项目中的最佳实践》
- 数学:确定性的丧失---第八章 不合逻辑的发展:天堂之门
- 频谱仪测试gsm信号测试软件,浅谈GSM ORFS输出频谱测试
- 超导磁通量子计算机,超导磁通量子比特低频磁通噪声的测量
热门文章
- “00后”来了!数睿数据迎来新生代「无代码」生力军
- 总有一天我会绽放属于自己的光彩
- 人生苦短、我爱python_人生苦短,我爱Python007——基本语法(5)
- 批量分析德邦物流,查询送达时间与官网同步
- 【Linux】找不到ensss IP地址 或者连接不上ssh解决方法
- 破解boson netsim for ccnp 7.06(测试内链接有效)
- 卷积神经网络图片滤镜_使用深度神经网络创建艺术性的实时视频滤镜
- 被动对焦中的相位对焦与反差对焦
- 200家+人工智能技术公司组团 CCAI2016等你来(参会指南)
- OCAD应用:平行光路中打入型变焦系统设计