6

我有一个包含 4 列、ID、NAME、AGE 和 COUNTRY 的表。一段时间以来,我已通过以下命令将我的 AGE 列设置为未使用

alter table Personal set unused column AGE;

现在我想再次使用同一列 AGE,如何在 Oracle(10g) 中执行此操作。

并删除一列并将一列设置为未使用,这是最佳选择。请指导我。

4

1 回答 1

15

您不能重复使用未使用的列。对该列唯一可能的操作是将其从表中删除。

但是您可以添加具有相同名称的新列,即使不删除未使用的列。

文档

ALTER TABLE...DROP UNUSED COLUMNS 语句是唯一允许对未使用的列执行的操作。它从表中物理删除未使用的列并回收磁盘空间。

在随后的 ALTER TABLE 语句中,指定了可选子句 CHECKPOINT。此子句导致在处理指定的行数后应用检查点,在本例中为 250。检查点减少了删除列操作期间累积的撤消日志量,以避免潜在的撤消空间耗尽。

ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS CHECKPOINT 250;

还有这个(强调我的):

标记未使用的列

如果您担心从大表中的所有行中删除列数据所需的时间长度,您可以使用 ALTER TABLE...SET UNUSED 语句。该语句将一个或多个列标记为未使用,但实际上并未删除目标列数据或恢复这些列占用的磁盘空间。但是,标记为未使用的列不会显示在查询或数据字典视图中,并且它的名称被删除,以便新列可以重用该名称。列上定义的所有约束、索引和统计信息也将被删除。

于 2012-12-01T09:06:26.520 回答