我有一个包含 4 列、ID、NAME、AGE 和 COUNTRY 的表。一段时间以来,我已通过以下命令将我的 AGE 列设置为未使用
alter table Personal set unused column AGE;
现在我想再次使用同一列 AGE,如何在 Oracle(10g) 中执行此操作。
并删除一列并将一列设置为未使用,这是最佳选择。请指导我。
您不能重复使用未使用的列。对该列唯一可能的操作是将其从表中删除。
但是您可以添加具有相同名称的新列,即使不删除未使用的列。
从文档
ALTER TABLE...DROP UNUSED COLUMNS 语句是唯一允许对未使用的列执行的操作。它从表中物理删除未使用的列并回收磁盘空间。
在随后的 ALTER TABLE 语句中,指定了可选子句 CHECKPOINT。此子句导致在处理指定的行数后应用检查点,在本例中为 250。检查点减少了删除列操作期间累积的撤消日志量,以避免潜在的撤消空间耗尽。
ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS CHECKPOINT 250;
还有这个(强调我的):
标记未使用的列
如果您担心从大表中的所有行中删除列数据所需的时间长度,您可以使用 ALTER TABLE...SET UNUSED 语句。该语句将一个或多个列标记为未使用,但实际上并未删除目标列数据或恢复这些列占用的磁盘空间。但是,标记为未使用的列不会显示在查询或数据字典视图中,并且它的名称被删除,以便新列可以重用该名称。列上定义的所有约束、索引和统计信息也将被删除。