内容简介:应用场景: 某软件系统中的数据库因为版本不断升级,需要定期导入最新的数据表结构到测试数据库中的不同表空间进行测试.导入的时候容易出现主键约束丢失问题.因此设计下面的脚本来实现批量新增主键约束功能.具体操作步骤如下:一、使用PL/SQL Developer工具连接上服务器上的某个数据库,按F8执行下面的脚本获取到最终要添加主键的SQL语句。
应用场景: 某软件系统中的数据库因为版本不断升级,需要定期导入最新的数据表结构到测试数据库中的不同表空间进行测试.导入的时候容易出现主键约束丢失问题.因此设计下面的脚本来实现批量新增主键约束功能.
具体操作步骤如下:
一、使用PL/SQL Developer工具连接上服务器上的某个数据库,按F8执行下面的脚本获取到最终要添加主键的 SQL 语句。
--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窗口。
三、执行添加主键约束脚本 。
四、补充说明:本例测试用的数据库中所有数据表字段中都有一个名称为ID的字段,执行多次后会提示一个数据表只能具有一个主键错误。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- sql server游标使用步骤示例(创建游标 关闭游标)
- MySQL数据表合并去重
- 小白学 Python 数据分析(13):Pandas (十二)数据表拼接
- PHPRAP 2.0.2 发布,接口和字段数据分离,字段使用单独数据表
- 验证一个值是否已经存在数据表中
- Kettle 7.1 连接HBase数据表
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。