Có cách nào để giảm độ dài cột trong DB2 không?Cách giảm chiều dài cột trong DB2
Giả sử tôi có nhiệt độ bảng với cột col1
được định nghĩa là VARCHAR(80)
. Tôi muốn giảm nó xuống VARCHAR(60)
.
Có cách nào để giảm độ dài cột trong DB2 không?Cách giảm chiều dài cột trong DB2
Giả sử tôi có nhiệt độ bảng với cột col1
được định nghĩa là VARCHAR(80)
. Tôi muốn giảm nó xuống VARCHAR(60)
.
Trong DB2 9.7 cho Linux/UNIX/Windows, bạn có thể sử dụng câu lệnh ALTER TABLE để giảm độ dài của cột, giả định rằng không có giá trị nào trong cột vượt quá kích thước cột mới:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
Nếu bất kỳ giá trị nào trong cột vượt quá kích thước mong muốn bạn phải xử lý trước tiên.
Trong các phiên bản trước của DB2 cho Linux/UNIX/Windows, bạn không thể sử dụng phương pháp này để giảm kích thước của cột. Bạn phải bỏ/tạo lại bảng, hoặc thực hiện quy trình thêm cột, sao chép dữ liệu và xóa cột cũ.
Bạn không thể giảm độ dài của cột. Để đạt được điều này ảnh hưởng đến bạn nên
Nếu bạn muốn tăng chiều dài, có thể với ALTER
lệnh
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)
Như một sự bổ sung cho câu trả lời và Clockwork-Muse's remark Ian:
Mặc dù có thể, như Ian chỉ ra, để sử dụng ALTER
báo cáo để giảm chiều dài cột trong DB cho LUW, đây không phải là trường hợp trong DB2 cho z/HỆ ĐIỀU HÀNH kể từ phiên bản 10.
Theo this table, chỉ thay đổi loại dữ liệu từ VARCHAR(n)
thành VARCHAR(n+x)
được hỗ trợ, đó là một con số thấp.
... Ngoại trừ bạn cũng có thể sử dụng lệnh 'ALTER TABLE' để _shorten_ cột. Tại sao bạn mong đợi rằng một lệnh có thể _increase_ chiều dài sẽ không thể sử dụng để _decrease_ nó là tốt? Cú pháp của bạn là đúng, và phải là câu lệnh mà anh ta cần. Mặc dù, tất nhiên, dữ liệu có thể bị cắt ngắn. –