Câu trả lời là không .
Đừng thêm một công cụ sửa đổi độ dài varchar
nếu bạn có thể tránh nó. Hầu hết thời gian, bạn thực sự không cần hạn chế độ dài. Chỉ cần sử dụng text
cho tất cả các dữ liệu nhân vật. Tạo điều đó varchar
(không có công cụ sửa đổi độ dài) nếu bạn cần duy trì khả năng tương thích với RDBMS không có text
.
Hiệu suất là gần như giống nhau - text
là một chút nhanh hơn trong những tình huống hiếm hoi , và giúp bạn tiết kiệm các chu kỳ cho việc kiểm tra về độ dài.
Nếu bạn thực sự cần phải thực thi một độ dài tối đa, vẫn sử dụng text
và thêm một ràng buộc kiểm tra cho điều đó:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
Bạn có thể sửa đổi hoặc loại bỏ một ràng buộc như vậy bất cứ lúc nào mà không phải lộn xộn với định nghĩa bảng và tất cả các đối tượng tùy thuộc (chế độ xem, chức năng, khóa ngoại, ...)
Với chiều dài từ bổ nghĩa bạn chỉ cần chạy vào các vấn đề như thế này hay này hay này ...
PostgreQuery 9.1 đã giới thiệu một tính năng mới để giảm bớt phần nào nỗi đau. Tôi trích dẫn các ghi chú phát hành ở đây :
Cho phép ALTER TABLE ... SET DATA TYPE
tránh viết lại bảng trong các trường hợp thích hợp (Noah Misch, Robert Haas)
Ví dụ, chuyển đổi một varchar
cột thành văn bản không còn yêu cầu viết lại bảng. Tuy nhiên, việc tăng ràng buộc độ dài trên một
varchar
cột vẫn yêu cầu viết lại bảng.