Oracle使用游标给所有数据表添加主键约束

栏目: 数据库 · 发布时间: 7年前

内容简介:应用场景: 某软件系统中的数据库因为版本不断升级,需要定期导入最新的数据表结构到测试数据库中的不同表空间进行测试.导入的时候容易出现主键约束丢失问题.因此设计下面的脚本来实现批量新增主键约束功能.具体操作步骤如下:一、使用PL/SQL Developer工具连接上服务器上的某个数据库,按F8执行下面的脚本获取到最终要添加主键的SQL语句。

应用场景: 某软件系统中的数据库因为版本不断升级,需要定期导入最新的数据表结构到测试数据库中的不同表空间进行测试.导入的时候容易出现主键约束丢失问题.因此设计下面的脚本来实现批量新增主键约束功能.

具体操作步骤如下:

一、使用PL/SQL Developer工具连接上服务器上的某个数据库,按F8执行下面的脚本获取到最终要添加主键的 SQL 语句。

Oracle使用游标给所有数据表添加主键约束

--Oracle使用游标给所有数据表添加主键约束

declare 

mytablename NVARCHAR2(200):=''; --定义要查询的数据表名称变量 

commentsql VARCHAR2(2000):=''; --定义要输出的执行语句字符串变量  

mytablekey NVARCHAR2(20):='ID'; --定义要查询的数据表主键字段名称变量 

cursor mycursor is select table_name from user_tables order by table_name;--定义游标      

myrecord mycursor%rowtype;  --定义游标记录类型   

Counter int :=0;   

begin   

open mycursor;  --打开游标   

if mycursor%isopen  then  --判断打开成功   

loop --循环获取记录集     

fetch mycursor into myrecord;

if mycursor%found then  --游标的found属性判断是否有记录  

begin  

mytablename:=myrecord.table_name;

commentsql:='alter table '||mytablename||' add constraint PK_'||mytablename||' primary key ('||mytablekey||');';

dbms_output.put_line(commentsql);      

--execute immediate commentsql;--立即执行语句(因为很多表主键字段不是ID容易报错所以注释掉)

--commit;    

end;   

else

exit; --获取游标中的记录     

end if;

end loop;   

else     

dbms_output.put_line('游标没有打开');   

end if; 

close mycursor;  --关闭游标   

end;

二、切换到PL/SQL Developer工具的输出选项卡,复制最终执行语句到新的SQL窗口。

Oracle使用游标给所有数据表添加主键约束

三、执行添加主键约束脚本 。

Oracle使用游标给所有数据表添加主键约束

四、补充说明:本例测试用的数据库中所有数据表字段中都有一个名称为ID的字段,执行多次后会提示一个数据表只能具有一个主键错误。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

使用HTML5和Node构建超媒体API

使用HTML5和Node构建超媒体API

【美】Mike Amundsen(麦克.阿蒙森) / 臧秀涛 / 电子工业出版社 / 2014-5 / 55.00元

《使用HTML5和Node构建超媒体API》探讨了超媒体API 的设计,介绍了作为超媒体API 的构件块的超媒体因子,并讲解了基本格式、状态转移、领域风格和应用流程这4 种超媒体设计元素;之后作者结合具体的场景,通过3个动手实验章节,从超媒体因子和超媒体设计元素入手,用实际的代码向我们详细地演示了超媒体API 的设计;最后介绍了超媒体设计的文档编写、注册与发布等内容。 《使用HTML5和No......一起来看看 《使用HTML5和Node构建超媒体API》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具