由于表重命名而更改的重命名约束引用

时间:2018-09-26 15:20:38

标签: sql oracle

我做了一些SQL更新一些事情,由于某些限制,我不得不:

  • 将表A重命名为A_OLD。
  • 创建表A(具有A(现在为A_OLD)所没有的某些列)。
  • 将A_OLD合并到A中。

但是现在我注意到我有一个问题,因为:

当我将A重命名为A_OLD时,它还将对A的任何约束都更改为对A_OLD的约束。 例如 : CONSTRAINT "FK_A" FOREIGN KEY ("ID_A") REFERENCES "A_OLD" ("ID_A") ENABLE

但是我的A_OLD只是临时的,我该怎么做才能将对A_OLD的任何引用更改为对A的引用?

1 个答案:

答案 0 :(得分:2)

您将添加一个“新”约束。

数据库内部不关心事物的名称(很多)。元数据不是使用事物的名称,而是使用对象引用-重命名对象不会更改对象的ID,而只是更改对象的外部名称。因此,重命名表会使所有外键“自动”引用表的新名称-外键约束仍然引用与重命名之前相同的对象ID。如果您现在已经创建了“新”表,并且希望外键引用“新”表,则需要创建一个引用“新”表的新外键。