wad*_*rld 1 oracle plsql oracle10g
使用Oracle 10g,我需要重命名一堆FK约束,这些约束都以LITE结尾以包含FK前缀.
我的想法是(我确保所有名称都足够短以容纳前缀):
DECLARE
v_name VARCHAR2(30 BYTE);
v_new_name VARCHAR2(30 BYTE);
CURSOR c1 is select CONSTRAINT name from user_constraints where constraint_type = 'R' and constraint_name like '%_LITE';
BEGIN
OPEN c1;
LOOP
FETCH c1 into v_name;
EXIT when c1%NOTFOUND;
v_new_name:= 'FK_' || v_name;
update user_constraints SET constraint_name = v_new_name where constraint_name = v_name;
END LOOP;
close c1;
END;
Run Code Online (Sandbox Code Playgroud)
任何原因导致不安全,我应该创建alter table语句?
USER_CONSTRAINTS是一个视图,您不能以普通用户身份进行更新.编辑:即使SYS不能这样做,对数据字典进行更新对我来说似乎是一个非常糟糕的主意.
更好地使用ALTER TABLE xxx RENAME CONSTRAINT yyy to zzz;
| 归档时间: |
|
| 查看次数: |
2772 次 |
| 最近记录: |