2012-12-14 22 views
9

Vui lòng giúp đỡ để sửa đổi một cột kiểu integer để nguyên mảng:PostgreSQL - ALTER kiểu dữ liệu cột từ số nguyên để nguyên mảng

tôi đã tạo ra một bảng với một cột content_id kiểu integer. sau đó tôi đã cố gắng để thay đổi content_id(integer)-integer[](integer array) nhưng lỗi hiển thị của nó như được hiển thị:

TestDatabase=# ALTER TABLE tbl_handset_content ALTER COLUMN content_id TYPE integer[]; 
ERROR: column "content_id" cannot be cast to type "pg_catalog.int4[]" 

Kính trọng,

Sravan

Trả lời

16

Hãy thử điều này (cột test_id là loại INTEGER trước ALTER diễn ra). PostgreSQL 8.4.

ALTER TABLE test.test_id 
    ALTER COLUMN test_id TYPE INTEGER[] 
    USING array[test_id]::INTEGER[]; 
+0

Bạn thay đổi loại hướng khác như thế nào? INTEGER [] tới INTEGER? Ví dụ, tôi chỉ muốn giữ nguyên phần tử đầu tiên. – thedouglenz

+0

Để di chuyển trở lại bằng phần tử đầu tiên sẽ là: '' 'ALTER TABLE test.test_id ALTER COLUMN test_id TYPE INTEGER SỬ DỤNG test_id [1] :: INTEGER;' '' Lưu ý rằng mảng được lập chỉ mục 1 theo mặc định. – GSP

2

Điều này làm việc tốt hơn cho tôi!

ALTER TABLE schema.table 
    ALTER COLUMN column 
    DROP DEFAULT; 
ALTER TABLE schema.table 
    ALTER COLUMN column TYPE INTEGER[] 
    USING array[column]::INTEGER[]; 
ALTER TABLE schema.table 
    ALTER COLUMN column SET DEFAULT '{}'; 
+0

Nếu bạn nhận được mảng n chiều (và không muốn điều đó) bảng cập nhật thiết lập colum = mảng (chọn e từ không nhất thiết (cột) u (e)); – Fotoncito

+0

Ngoại trừ việc nó không hiệu quả với tôi. Nhưng hãy soi sáng chúng ta bằng cái nhìn sâu sắc của bạn? – Fotoncito

Các vấn đề liên quan