Oracle系统表外键的更名

来源:asp之家 时间:2010-07-26 13:07:00 

 Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系。外键涉及到两个表,其中一个称之为父项表,另一个称之为子项表。

  父项表(parent table)是参照约束的基础,即通过检查这张表的有效数据情况来判断约束是否成立,它是参照约束的条件,影响约束,而不受约束的任何影响。

  子项表(child table)是参照约束的对象,当其发生变化,如有新数据输入时,通过比较父项表中的有效数据状况,来判断这些变化是否符合约束条件,若不符合,则拒绝要发生的变化。

  在实际应用系统中,开发者为了保证系统的完整性,一般要定义大量的外键。然而,如果外键的命名不规范,如采用系统自动生成的名称,则在以后的系统运行维护中会造成很大的麻烦。如在系统运行后,加载大量数据或者进行一些数据转换操作等时,出现外键错误时,根据系统提示的外键错误,根本不可能直接定位到那两个表间的外键发生错误,需要浪费很多时间查找造成错误发生的外键的父项表和子项表,然后才能进一步确定是那条记录违反了外键约束条件。通常,我们采用这样的命名规则来命名外键FK_Child_table name_Parent_table name。由于外键名称的最大长度限制在30个字符之内,对child_table_name和Parent_table name不一定和原表一模一样,可以采取一些简写的办法,但名称一定要能反映出约束的两个表。这里的命名,Child_table name指子项表,也就是约束表,Parent_table name是指父项表,也就是被约束的表。

  下面来详细讨论如何将应用系统中不规范的外键命名修改为规范的外键名称。在讨论之前,需要提醒读者注意的是,完成下面的操作需要花费较长的时间,所以一定要规划在系统空闲时来完成。同时这里的外键更名,采用的方法是首先删除然后重建,涉及到删除应用系统对象的操作,所以在操作之前,为安全起见,应该备份应用系统。




 一、生成系统目前的外键报告单

  首先生成系统目前模式下的所有外键情况报告单,SQL脚本如下:


  该脚本生成所在模式下的所有外键情况,包括外键名称,父项表名称,子项表名称以及引用的列名称等。在SQL/PLUS下运行该脚本,在运行该脚本之前,可以将输出SPOOL到本地某个文件中。同时要注意,如果应用系统中的外键比较多且复杂的话,这个脚本的运行时间会比较长。

  二、生成删除系统自动命名的外键脚本

  在SQL/PLUS下,运行下面的脚本来生成删除系统自动命名(也就是外键名称以SYS为前缀)的所有外键,和生成外键报告一样,将生成脚本spool到某个文件中。
  运行该脚本,系统生成如下所示的删除外键脚本:
三、生成重新创建删除的外键脚本

  在SQL/PLUS下,运行下面的脚本来生成重新创建删除的外键脚本:


  运行该脚本,系统生成如下所示的创建外键脚本:

  ALTER TABLE DJ_NSRXX ADD CONSTRAINT 外键名称 FOREIGN KEY (RYDM) REFERENCES DM_GY_SWRY(RYDM);

  将上面的外键名称以上面介绍的规范命名规则命名的外键名称代替,就是


  四、外键更名

  生成上面的两个脚本后,首先运行第二步中删除系统自动生成外键的脚本,将系统中命名不规范的外键删除,然后运行第三步中生成的创建外键的脚本,重新创建这些删除的外键,也就实现了对不规范外键的更名。

  五、系统检查

  操作完成后,重新执行步骤1,再生成一个应用系统的外键报告单,作对比检查。如果正确无误,则更名成功,否则查找原因。

标签:oracle,表
0
投稿

猜你喜欢

  • 自己写的一个PJBlog中可以双击输入验证码的修改

    2009-05-17 10:51:00
  • 用css3-tranistions实现平滑过渡

    2009-12-23 19:24:00
  • 建立三层结构的ASP应用程序

    2009-01-21 19:41:00
  • 带进度条的ASP无组件断点续传大文件下载

    2010-06-25 18:27:00
  • 成为一个顶级设计师的第三准则

    2009-09-15 21:00:00
  • 关于设计品质保证(DQA)的几点想法

    2007-11-16 16:55:00
  • Oracle 存储过程教程

    2009-10-24 18:05:00
  • 静态网页加密工具

    2009-01-05 12:05:00
  • 说说回车键触发表单提交的问题

    2009-02-03 13:25:00
  • 简单的文本内容处理工具

    2010-01-28 12:31:00
  • 学习完全掌握纯CSS布局网页

    2008-05-28 17:14:00
  • css网页下拉菜单制作方法(1):基本原理

    2007-02-03 11:39:00
  • Date对象格式化方法

    2009-11-16 13:17:00
  • 戴尔是如何设计新官网首页的

    2008-07-08 19:02:00
  • wap开发 完整的WML文档结构详解

    2008-05-21 13:39:00
  • SQL Server Table中XML列的操作代码

    2011-11-03 17:18:16
  • 新手入门:防范SQL注入攻击的新办法

    2009-03-11 15:14:00
  • 古老的问题:清除浮动

    2009-02-12 11:21:00
  • 百度“有啊”首页首次曝光 以绿色调为主

    2008-10-20 12:52:00
  • Favicon图标小常识

    2010-04-01 12:01:00
  • asp之家 网络编程 m.aspxhome.com