Oracle-10g

使用 DBMS_REDEFINITON 重新定義表時重新創建索引和約束

  • October 16, 2012

我有一個具有以下特徵的表 A:

  • 多個索引
  • 約束(空、唯一、檢查、外鍵)
  • 2 個觸發器(更新前)
  • 首要的關鍵

如果我要使用 dbms_redefintion 重新定義表以更改儲存,我是否必須重新創建指向臨時表的觸發器、約束和触發器,或者這是否會自動進行,只需在重新定義後重命名它們?

如果您只是重新定義儲存,則無需重新定義表即可。您可以更改表定義。重新排列列順序需要重新定義。大多數其他更改可以通過更改表來完成。

如果您確實重新定義了表,則需要在新表上定義所需的約束和索引。這些將需要新名稱。某些對象可以稍後重命名。

如果你想用新的儲存重建表,你可以通過線上移動來做到這一點。如果新的儲存定義不包含新的表空間,則需要將其移動兩次,一次移至另一個表空間,然後移回原始表空間。

您應該使用唯一的名稱重新創建它們。

引用自:https://dba.stackexchange.com/questions/2018