Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tại sao Oracle DROP COLUMN này lại thay đổi giá trị mặc định của một cột khác?

Đây là một lỗi của Oracle.

Nó được kích hoạt bằng cách thêm một cột có cả NOT NULL ràng buộc và một DEFAULT giá trị của một bảng hiện có.

Để thêm cột một cách nhanh chóng, Oracle 11g lưu trữ giá trị mặc định trong từ điển dữ liệu. Oracle gọi đây là "tối ưu hóa thêm cột".

Điều này nhanh hơn so với việc viết ra giá trị mặc định vào mỗi hàng của bảng. Sau đó, công cụ truy vấn phải thay thế bất kỳ NULL nào trong hàng bảng bằng giá trị mặc định từ từ điển dữ liệu. Thật không may, có một số lỗi liên quan đến điều này. Của bạn dường như là một ví dụ của:

Bạn có thể kiểm tra xem những cột nào đã được thêm vào như thế này:

 select owner, object_name, name 
 from dba_objects, col$
 where bitand(col$.PROPERTY,1073741824)=1073741824
 and object_id=obj#;

Trong trường hợp của chúng tôi, chúng tôi đã bị cắn bởi một lỗi khác trả lại kết quả không chính xác cho SELECT FOR UPDATE .

Chúng tôi đặt tham số _add_col_optim_enabled=FALSE để tắt "tối ưu hóa" này. Ngoài ra, bạn có thể nâng cấp lên phiên bản Oracle mới hơn, nơi các lỗi này đã được giải quyết.

Nâng cấp hoặc thiết lập thông số trên sẽ không sửa được bảng hiện có của bạn, bảng này bị hỏng. Bạn phải tạo lại bảng đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle UNION các cột khác nhau

  2. Oracle Create View vấn đề

  3. chọn * từ tên_bảng có cột như ' '

  4. Xem ứng dụng oracle và nhận:java.lang.ClassNotFoundException:oracle.forms.engine.Main

  5. Không thể tải tệp hoặc lắp ráp Oracle.DataAccess