2012-12-01 17 views
5

Tôi có một bảng có 4 cột, ID, NAME, AGE và COUNTRY. Đối với một số thời gian là mục đích tôi đã thiết lập cột TUỔI tôi như không sử dụng bởi bên dưới lệnhCách sử dụng lại các cột chưa sử dụng một lần nữa trong oracle DB

alter table Personal set unused column AGE; 

Bây giờ tôi muốn sử dụng TUỔI cột cùng một lần nữa, Làm thế nào để làm điều này trong Oracle (10g).

và thả cột và đặt cột thành Không sử dụng là tùy chọn tốt nhất. Xin hướng dẫn tôi.

Trả lời

12

Bạn không thể sử dụng lại cột không sử dụng. Hành động duy nhất có thể có trên cột là xóa nó khỏi bảng.

Nhưng bạn có thể thêm cột mới có cùng tên, ngay cả khi không xóa cột không sử dụng.

Từ documentation

Câu lệnh ALTER TABLE ... thả các cột UNUSED tuyên bố là hành động chỉ được phép trên các cột không sử dụng. Nó thể chất loại bỏ các cột không sử dụng từ bảng và reclaims không gian đĩa.

Trong câu lệnh ALTER TABLE theo sau, mệnh đề tùy chọn CHECKPOINT được chỉ định. Mệnh đề này làm cho một trạm kiểm soát được áp dụng sau khi xử lý số hàng được chỉ định, trong trường hợp này là 250. Điểm kiểm tra cắt giảm số lượng các bản ghi hoàn tác được tích lũy trong quá trình hoạt động của cột thả để tránh khả năng hoàn tác không gian.

ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS CHECKPOINT 250; 

Và khác (tôi nhấn mạnh) này:

đánh dấu cột không sử dụng

Nếu bạn lo lắng về khoảng thời gian nó có thể làm để thả dữ liệu cột từ khắp nơi của các hàng trong một bảng lớn, bạn có thể sử dụng ALTER TABLE ... SET UNUSED statement. Câu lệnh này đánh dấu một hoặc nhiều cột là không sử dụng, nhưng không thực sự loại bỏ dữ liệu cột đích hoặc khôi phục không gian đĩa bị chiếm bởi các cột này. Tuy nhiên, cột được đánh dấu là không sử dụng sẽ không được hiển thị trong truy vấn hoặc chế độ xem từ điển dữ liệu, và tên của cột được xóa để cột mới có thể sử dụng lại tên đó. Tất cả các ràng buộc, chỉ mục và thống kê được xác định trên cột cũng bị loại bỏ.

+0

Các tài liệu tham chiếu là cho 11g, nhưng trong 10g [các quy tắc tương tự áp dụng] (http://docs.oracle.com/cd/B19306_01/server.102/b14231/tables.htm#sthref2328) – jachguate

+1

Cảm ơn rất nhiều cho giải pháp tốt đẹp, jachguate. – Mohan