在Oracle中,当我删除列时会发生什么?

在Oracle中,当我删除列时会发生什么?,oracle,Oracle,当我从一个填充的表中删除一列时,会发生什么样的事情。在所有_tab_列中,是否重置了其他列的列_id 这些行动将至少包括以下内容: 该列中存储的数据丢失 引用该列的视图是无效的,但是(根据-谢谢!)它们不会被删除;在修改以使用修改后的模式之前,它们一直无效 引用该列的存储过程无效-同样的警告 将重置以下列的列ID号 将删除对该列授予的权限 将删除引用该列的索引 更改表格下拉列 将实际访问每个块并删除列数据——对于一个大表来说,这是一件昂贵的事情 您可能会发现发布以下内容更为谨慎: 更改未使用的

当我从一个填充的表中删除一列时,会发生什么样的事情。在所有_tab_列中,是否重置了其他列的列_id

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

  • 该列中存储的数据丢失
  • 引用该列的视图是无效的,但是(根据-谢谢!)它们不会被删除;在修改以使用修改后的模式之前,它们一直无效
  • 引用该列的存储过程无效-同样的警告
  • 将重置以下列的列ID号
  • 将删除对该列授予的权限
  • 将删除引用该列的索引

更改表格下拉列

将实际访问每个块并删除列数据——对于一个大表来说,这是一件昂贵的事情

您可能会发现发布以下内容更为谨慎:

更改未使用的表格集


它只是在字典中将列标记为“已消失”。如果您仍然需要回收该空间,您可以在安静的时间安排“alter table drop unused”(更改表删除未使用的表)

这是一个好问题,我不知道,但我希望删除列实际上会保留相同的列ID,除非在后台重建表。视图/过程不会被删除,但将被宣告无效,并且(大部分)将继续无效。