如何在我不知道名称时重命名约束

时间:2009-11-03 16:13:35

标签: sql oracle constraints

我需要在Oracle数据库中重命名约束,但我不知道设计时的旧名称。

我想做的是:

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; 
end;

但我得到错误消息“PLS-00103:遇到符号”ALTER“当期待以下之一:开始案例”。

如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

使用动态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;