วิธีเปลี่ยน Computed Column
ให้เป็น Regular Column ใน SQL Server
ถ้าคุณกำลังทำงานกับ SQL Server คุณอาจพบสถานการณ์ที่คุณต้องการเปลี่ยน computed column ให้เป็น regular column ซึ่งอาจจำเป็นถ้าคุณต้องการเริ่มเก็บข้อมูลโดยตรงในคอลัมน์แทนที่จะให้คอลัมน์นั้นถูกคำนวณโดยอัตโนมัติตามนิพจน์ อย่างไรก็ตาม SQL Server ไม่อนุญาตให้คุณเปลี่ยน computed column ที่มีอยู่ให้อยู่ในรูปแบบที่ไม่ใช่ computed column โดยยังคงรักษาข้อมูลไว้อย่างง่ายดาย แต่มีวิธีการที่สามารถทำให้ผลลัพธ์ที่ต้องการได้ ในโพสต์บล็อกนี้เราจะอธิบายขั้นตอนเป็นลำดับ
ความเข้าใจเกี่ยวกับ Computed Columns
ก่อนที่เราจะลงไปที่วิธีการแก้ปัญหา สิ่งสำคัญคือต้องเข้าใจว่า computed column คืออะไร
- Computed Column: Computed column ใน SQL Server เป็นคอลัมน์เสมือนที่ได้มาจากนิพจน์ที่เกี่ยวข้องกับคอลัมน์อื่น ๆ ในตารางเดียวกัน ค่าในคอลัมน์นี้จะถูกคำนวณโดยอัตโนมัติเมื่อมีการเรียกข้อมูลหรือมีการแก้ไขแถว
- ตัวอย่าง: ตัวอย่างเช่น ถ้าคุณมีคอลัมน์
full_name
ที่ได้มาจากคอลัมน์first_name
และlast_name
, SQL Server จะคำนวณfull_name
ทุกครั้งที่คุณเรียกดูตาราง
ตอนนี้เรามาดูขั้นตอนที่จำเป็นในการเปลี่ยน computed column ให้เป็น regular column โดยไม่สูญเสียค่าปัจจุบัน
วิธีการตามขั้นตอน
ขั้นตอนที่ 1: เพิ่มคอลัมน์ใหม่ลงในตาราง
ขั้นตอนแรกคือการสร้างคอลัมน์ใหม่ในตารางที่มีอยู่ ซึ่งในท้ายที่สุดจะเก็บค่าที่อยู่ใน computed column ที่เก่า นี่คือวิธีที่คุณสามารถทำได้:
ALTER TABLE YourTableName ADD NewColumnName DataType;
แทนที่ YourTableName
ด้วยชื่อของตารางของคุณ, NewColumnName
ด้วยชื่อของคอลัมน์ใหม่ และ DataType
ด้วยประเภทข้อมูลที่ต้องการ (เช่น VARCHAR
, INT
, เป็นต้น) ตามค่าที่คาดหวัง
ขั้นตอนที่ 2: คัดลอกข้อมูลจากคอลัมน์ที่คำนวณได้
ถัดไปคุณจะต้องโอนข้อมูลจาก computed column ไปยังคอลัมน์ใหม่ที่คุณเพิ่งสร้าง คุณสามารถทำได้โดยใช้คำสั่ง UPDATE
:
UPDATE YourTableName SET NewColumnName = ComputedColumnName;
ให้แน่ใจว่าได้แทนที่ ComputedColumnName
ด้วยชื่อของ computed column ที่คุณกำลังคัดลอกข้อมูลจาก
ขั้นตอนที่ 3: ลบคอลัมน์ที่คำนวณได้
ตอนนี้ที่คุณมีค่าที่เก็บไว้ในคอลัมน์ใหม่ คุณสามารถลบคอลัมน์ที่คำนวณได้เก่าได้ นี่จะช่วยประหยัดพื้นที่ในตารางของคุณและทำให้การเปลี่ยนแปลงเสร็จสมบูรณ์:
ALTER TABLE YourTableName DROP COLUMN ComputedColumnName;
ขั้นตอนที่ 4: เปลี่ยนชื่อคอลัมน์ใหม่ (อาจจะ)
ถ้าคุณต้องการให้คอลัมน์ใหม่มีชื่อเหมือนกับคอลัมน์ที่คำนวณได้เก่าเพื่อความสอดคล้อง คุณสามารถใช้:
EXEC sp_rename 'YourTableName.NewColumnName', 'ComputedColumnName', 'COLUMN';
สรุปขั้นตอนการทำงาน
เพื่อเปลี่ยน computed column ให้เป็น non-computed column ให้ปฏิบัติตามขั้นตอนง่าย ๆ เหล่านี้:
- เพิ่มคอลัมน์ใหม่ ลงในตาราง
- คัดลอกข้อมูล จาก computed column ไปยังคอลัมน์ใหม่
- ลบคอลัมน์ที่คำนวณได้
- (อาจจะ) เปลี่ยนชื่อคอลัมน์ใหม่ เพื่อรักษาชื่อเดิม
สรุป
แม้ว่า SQL Server จะไม่อนุญาตให้เปลี่ยน computed column เป็น regular column โดยตรง ขั้นตอนที่ได้กล่าวถึงข้างต้นให้วิธีการแก้ปัญหาที่เหมาะสมโดยไม่สูญเสียข้อมูลที่มีอยู่ของคุณ โดยการเพิ่มคอลัมน์ใหม่ คัดลอกข้อมูล และจากนั้นลบ computed column คุณสามารถบรรลุผลลัพธ์ที่ต้องการอย่างมีประสิทธิภาพ
หากคุณพบว่าบล็อกนี้มีประโยชน์หรือรู้จักใครที่อาจได้รับประโยชน์จากข้อมูลนี้ อย่าลังเลที่จะแชร์! สำหรับเคล็ดลับและกลเม็ดเพิ่มเติมเกี่ยวกับ SQL Server รอติดตามบล็อกของเรา.