คำตอบคือไม่มี
อย่าเพิ่มตัวแก้ไขความยาวไว้varchar
หากคุณสามารถหลีกเลี่ยงได้ ส่วนใหญ่คุณไม่จำเป็นต้องมีการจำกัดความยาวอยู่ดี เพียงใช้text
กับข้อมูลตัวละครทั้งหมด ทำเช่นนั้นvarchar
(ไม่มีตัวดัดแปลงความยาว) หากคุณต้องการใช้งานร่วมกับ RDBMS ที่ไม่มีtext
อยู่
ประสิทธิภาพเกือบจะเหมือนกัน - text
จะเร็วกว่าเล็กน้อยในสถานการณ์ที่หายากและคุณบันทึกวงจรสำหรับการตรวจสอบความยาว
หากคุณต้องการบังคับใช้ความยาวสูงสุดจริง ๆยังคงใช้text
และเพิ่มข้อ จำกัด การตรวจสอบสำหรับสิ่งนั้น:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 51);
คุณสามารถปรับเปลี่ยนหรือลดข้อ จำกัด ดังกล่าวได้ตลอดเวลาโดยไม่ต้องยุ่งกับคำจำกัดความของตารางและวัตถุที่ขึ้นกับทั้งหมด (มุมมอง, ฟังก์ชั่น, ปุ่มต่างประเทศ, ... )
ด้วยตัวดัดแปลงความยาวคุณจะพบปัญหาเช่นนี้หรือนี่หรือสิ่งนี้ ...
PostgreSQL 9.1 ได้แนะนำคุณสมบัติใหม่ในการบรรเทาอาการปวดบ้าง ฉันพูดบันทึกประจำรุ่นที่นี่ :
อนุญาตให้ALTER TABLE ... SET DATA TYPE
หลีกเลี่ยงการเขียนตารางซ้ำในกรณีที่เหมาะสม (Noah Misch, Robert Haas)
ตัวอย่างเช่นการแปลงvarchar
คอลัมน์เป็นข้อความไม่จำเป็นต้องเขียนตารางอีกต่อไป อย่างไรก็ตามการเพิ่มข้อจำกัดความยาวของ
varchar
คอลัมน์ยังคงต้องใช้การเขียนตารางใหม่