开发者

How to rename a constraint when I don't know the name

开发者 https://www.devze.com 2022-12-10 07:29 出处:网络
I need to rename a constraint in an Oracle databse, but I don\'t know the old name at design-time. What I would like to do is this:

I need to rename a constraint in an Oracle databse, but I don't know the old name at design-time.

What I would like to do is this:

declare
  vOldName string;
begin
  select CONSTRAINT_NAME 
  into   vOldName 
  from   user_constraints 
  where  TABLE_NAME='AGREEMENT' and CONSTRAINT_TYPE='R';

  alter table Agreement rename constraint vOldName to AGREEMENT_FK1; 开发者_StackOverflow中文版
end;

but I get the error message "PLS-00103: Encountered the symbol "ALTER" when expecting one of the following: begin case ".

How do I solve this problem?


Use dynamic PL/SQL:

declare
  vOldName user_constraints.constraint_name%TYPE;
begin
  select CONSTRAINT_NAME 
  into   vOldName 
  from   user_constraints 
  where  TABLE_NAME='AGREEMENT' and CONSTRAINT_TYPE='R';

  execute immediate 'alter table Agreement rename constraint ' 
      || vOldName || ' to AGREEMENT_FK1'; 
end;
0

精彩评论

暂无评论...
验证码 换一张
取 消