Bạn không thể chỉ chuyển int4 thành uuid; nó sẽ là một uuid không hợp lệ, chỉ có 32 bit được đặt, 96 bit cao là 0.
Nếu bạn muốn tạo các UUID mới để thay thế hoàn toàn các số nguyên và nếu không có tham chiếu khóa ngoại nào hiện có cho các số nguyên đó, bạn có thể sử dụng một kiểu truyền giả thực sự tạo ra các giá trị mới.
Không chạy cái này mà không có bản sao lưu dữ liệu của bạn. Nó vĩnh viễn loại bỏ các giá trị cũ trong colA
.
ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());
Cách tiếp cận tốt hơn thường là thêm một cột uuid, sau đó sửa mọi tham chiếu khóa ngoại để trỏ đến nó và cuối cùng thả cột ban đầu.
Bạn cần cài đặt mô-đun UUID:
CREATE EXTENSION "uuid-ossp";
Các dấu ngoặc kép rất quan trọng.