Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103749867
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-21 21:23:59

来自:

三、生成重新创建删除的外键脚本

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

**************************************************************
  脚本3:重新创建外键
  **************************************************************
  SELECT 'ALTER TABLE ' || child.TABLE_NAME||' ' ||
  'ADD CONSTRAINT ' || '外键名称 ' ||' '||
  'FOREIGN KEY ' || '('|| cp.COLUMN_NAME || ')' ||
  ' '|| 'REFERENCES ' || parent.TABLE_NAME ||' '||
  '('|| pc.COLUMN_NAME || ')'|| child.DELETE_RULE || ' ;'
  FROM USER_CONSTRAINTS child,
  USER_CONSTRAINTS parent,
  USER_CONS_COLUMNS cp,
  USER_CONS_COLUMNS pc
  WHERE child.CONSTRAINT_TYPE = 'R' AND
  child.R_OWNER = PARENT.OWNER AND
  child.R_CONSTRAINT_NAME = PARENT.CONSTRAINT_NAME AND
  child.CONSTRAINT_NAME = cp.CONSTRAINT_NAME AND
  parent.CONSTRAINT_NAME = pc.CONSTRAINT_NAME AND
  cp.POSITION = pc.POSITION AND
  child.CONSTRAINT_NAME LIKE 'SYS%'
  ORDER BY child.OWNER,
  child.TABLE_NAME,
  child.CONSTRAINT_NAME,
  cp.POSITION;

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

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

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

ALTER TABLE DJ_NSRXX ADD CONSTRAINT FK_DJ_NSRXX_DM_GY_SWRY FOREIGN KEY (RYDM) REFERENCES DM_GY_SWRY(RYDM);

四、外键更名

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

五、系统检查

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

阅读(210) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~