การเพิ่มความกว้างคอลัมน์ (nvarchar) จำเป็นต้องวางตารางหรือไม่
กล่าวอีกนัยหนึ่งความกว้างสามารถเปลี่ยนแปลงได้ในสภาพแวดล้อมการผลิตกับผู้ใช้ที่ใช้งานอยู่หรือไม่
ฉันคิดว่าถ้าขนาดเพิ่มขึ้น (เมื่อเทียบกับการลดลง) นี่จะไม่เป็นปัญหา
การเพิ่มความกว้างคอลัมน์ (nvarchar) จำเป็นต้องวางตารางหรือไม่
กล่าวอีกนัยหนึ่งความกว้างสามารถเปลี่ยนแปลงได้ในสภาพแวดล้อมการผลิตกับผู้ใช้ที่ใช้งานอยู่หรือไม่
ฉันคิดว่าถ้าขนาดเพิ่มขึ้น (เมื่อเทียบกับการลดลง) นี่จะไม่เป็นปัญหา
คำตอบ:
หากคุณทำผ่านคำสั่ง T-SQL เช่นด้านล่างจะไม่มีการวางตารางและคุณสามารถทำได้ในสภาพแวดล้อมการใช้งานจริง:
alter table <table> alter column <column> nvarchar(biggernumber) [not] null
หากคุณทำผ่านตารางการออกแบบ SSMS GUI นั้นจะขึ้นอยู่กับสคริปต์ที่ตัดสินใจใช้เพื่อดำเนินการเปลี่ยนแปลง บางครั้งมันจะแทรกข้อมูลลงในตารางชั่วคราววางตารางต้นฉบับสร้างเวอร์ชันใหม่ของตารางนั้นและแทรกกลับเข้าไปในตารางใหม่ วิธีง่ายๆในการค้นหาสิ่งที่จะทำคือคลิกปุ่ม "สร้างสคริปต์" และดูที่ T-SQL ซึ่งมีแผนจะดำเนินการ
การเพิ่มความกว้างคอลัมน์ของnvarchar
คอลัมน์ไม่จำเป็นต้องมีการปล่อยตาราง ไม่มีALTER TABLE
การดำเนินการใด ๆ สำหรับรายละเอียดเกี่ยวกับข้อ จำกัด เมื่อเปลี่ยนคุณสมบัติของตารางหรือคอลัมน์คุณสามารถอ่านคำสั่ง ALTER TABLEได้
ฉันคัดลอกส่วนที่เกี่ยวข้องมากที่สุดจากเอกสารด้านล่าง:
การเปลี่ยนขนาดของคอลัมน์
คุณสามารถเปลี่ยนความยาวความแม่นยำหรือมาตราส่วนของคอลัมน์ได้โดยการระบุขนาดใหม่สำหรับชนิดข้อมูลคอลัมน์ในส่วนคำสั่ง ALTER COLUMN หากมีข้อมูลอยู่ในคอลัมน์ขนาดใหม่จะต้องไม่เล็กกว่าขนาดสูงสุดของข้อมูล นอกจากนี้คอลัมน์ไม่สามารถกำหนดในดัชนีเว้นแต่คอลัมน์จะเป็นประเภทข้อมูล varchar, nvarchar หรือ varbinary และดัชนีไม่ได้เป็นผลลัพธ์ของข้อ จำกัด หลักของคีย์ ดูตัวอย่าง P
ล็อคและแก้ไขตาราง
การเปลี่ยนแปลงที่ระบุใน ALTER TABLE จะถูกนำไปใช้งานทันที หากการเปลี่ยนแปลงจำเป็นต้องมีการแก้ไขแถวในตาราง ALTER TABLE จะอัพเดตแถว ALTER TABLE ได้รับ schema แก้ไขการล็อกบนตารางเพื่อให้แน่ใจว่าไม่มีการอ้างอิงการเชื่อมต่ออื่น ๆ แม้แต่ข้อมูลเมตาสำหรับตารางในระหว่างการเปลี่ยนแปลงยกเว้นการดำเนินการดัชนีออนไลน์ที่ต้องใช้การล็อค SCH-M ที่สั้นมากในตอนท้าย ในการเปลี่ยนแปลง ALTER TABLE … SWITCH การล็อคจะได้รับทั้งบนตารางต้นทางและปลายทาง การปรับเปลี่ยนที่ทำกับตารางจะถูกบันทึกและสามารถกู้คืนได้อย่างสมบูรณ์ การเปลี่ยนแปลงที่มีผลต่อแถวทั้งหมดในตารางที่มีขนาดใหญ่มากเช่นการวางคอลัมน์หรือเพิ่มคอลัมน์ NOT NULL ด้วยค่าเริ่มต้นอาจใช้เวลานานในการดำเนินการให้เสร็จสมบูรณ์และสร้างบันทึกการบันทึกจำนวนมาก คำสั่ง ALTER TABLE เหล่านี้ควรดำเนินการด้วยความระมัดระวังเช่นเดียวกับ INSERT, UPDATE ใด ๆ