วิธีเปลี่ยน 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 ให้ปฏิบัติตามขั้นตอนง่าย ๆ เหล่านี้:

  1. เพิ่มคอลัมน์ใหม่ ลงในตาราง
  2. คัดลอกข้อมูล จาก computed column ไปยังคอลัมน์ใหม่
  3. ลบคอลัมน์ที่คำนวณได้
  4. (อาจจะ) เปลี่ยนชื่อคอลัมน์ใหม่ เพื่อรักษาชื่อเดิม

สรุป

แม้ว่า SQL Server จะไม่อนุญาตให้เปลี่ยน computed column เป็น regular column โดยตรง ขั้นตอนที่ได้กล่าวถึงข้างต้นให้วิธีการแก้ปัญหาที่เหมาะสมโดยไม่สูญเสียข้อมูลที่มีอยู่ของคุณ โดยการเพิ่มคอลัมน์ใหม่ คัดลอกข้อมูล และจากนั้นลบ computed column คุณสามารถบรรลุผลลัพธ์ที่ต้องการอย่างมีประสิทธิภาพ

หากคุณพบว่าบล็อกนี้มีประโยชน์หรือรู้จักใครที่อาจได้รับประโยชน์จากข้อมูลนี้ อย่าลังเลที่จะแชร์! สำหรับเคล็ดลับและกลเม็ดเพิ่มเติมเกี่ยวกับ SQL Server รอติดตามบล็อกของเรา.