Oracle系统中表外键的更名
2006-08-05 11:51:33 来源:WEB开发网******************************************************************************
脚本2:删除系统自动生成的外键约束条件
******************************************************************************/
SELECT 'ALTER TABLE ' || TABLE_NAME ||' '||
'DROP CONSTRAINT ' || CONSTRAINT_NAME || ' ;'
FROM USER_CONSTRAINTS
WHERE CONSTRAINT_NAME LIKE 'SYS%' AND
CONSTRAINT_TYPE = 'R';
运行该脚本,系统生成如下所示的删除外键脚本:
ALTER TABLE DJ_NSRXX DROP CONSTRAINT SYS_C000231;
三、生成重新创建删除的外键脚本
在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,再生成一个应用系统的外键报告单,作对比检查。如果正确无误,则更名成功,否则查找原因。
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接