删除列时Oracle中会发生什么?

时间:2010-11-01 06:39:25

标签: oracle

从填充表中删除列时会发生什么样的事情。在all_tab_columns中,其他列的column_id是否会重置?

2 个答案:

答案 0 :(得分:18)

这些行动至少包括以下内容:

  • 该列中存储的数据将丢失。
  • 引用该列的视图无效 - 但是(根据Gary - 谢谢!)它们不会被删除;它们保持无效,直到修改为使用修改后的架构。
  • 引用该列的存储过程无效 - 同样需要注意。
  • 将重置以下列的列ID编号。
  • 将删除对该列授予的权限。
  • 引用该列的索引将被删除。

答案 1 :(得分:4)

alter table drop column

实际上会访问每个块并删除列数据 - 这对于大型表来说是一件昂贵的事情。

您可能会发现更谨慎的问题:

alter table set unused

只是将列标记为字典中的“已消失”。如果您仍需要回收该空间,则可以在安静的时间安​​排“未使用的alter table drop”