Chúng ta có một cột VARCHAR trong một bảng, mà chúng ta cần phải nâng cấp lên kiểu enum.Nâng cấp một cột VARCHAR thành loại enum trong postgresql
Tất cả các giá trị trong cột VARCHAR là các giá trị hợp lệ trong điều tra. Không có giá trị null trong cột varchar.
ALTER TABLE tableName
ALTER COLUMN varcharColumn TYPE enum_type
ERROR: Cột "varcharColumn" không thể được đúc để gõ enum_type bang SQL: 42804
Vòng khoảng cách là
- Tạo một cột mới với kiểu enum.
- Cập nhật cột loại enum bằng cột varchar sau khi nhập.
- Thả cột VARCHAR.
- Đổi tên tên cột kiểu enum thành tên cột varchar.
Có cách nào tốt hơn để đạt được điều này không?
Xin cảm ơn trước.
Enums cũng có nhiều vấn đề hơn khi làm việc với một số ứng dụng khách hơn so với các bảng tra cứu hoặc các cột bị ràng buộc đơn giản. Như bất cứ ai đã có những niềm vui không rõ ràng của làm việc với enums trong JPA/Hibernate biết. –
Cảm ơn a_horse_with_no_name! Mặc dù tôi đã tìm ra giải pháp từ tài liệu, giải thích của bạn khá toàn diện và hữu ích. – Gopal
Gần đây tôi cần phải tổ chức lại enums bằng cách di chuyển chúng đến các lược đồ là nó có ý nghĩa hơn cho chúng. Như vậy, các bảng dựa vào các enums cần thiết để có các loại "thay đổi" để trỏ đến vị trí mới cho enum. Tôi đã làm nó như sau, với một diễn viên đôi: 'thay đổi bảng my_schema.my_column thay đổi cột sale_item_status loại my_schema.my_column_enum bằng cách sử dụng ((my_column :: văn bản) :: my_schema.my_column_enum)' - HTH bất cứ ai khác với enum " vấn đề "về bản chất này –