Temporary Table ใน SQL Server มันคืออะไร

--

บทความนี้เป็นสิ่งที่ผมอย่างให้ทุกคนรู้ว่า Temporary Table มันใช้งานได้ง่ายมาก และมีประโยชน์อย่างยิ่ง หากว่าเราต้องการคำนวนบางอย่างใน Database ที่ซับซ้อน

เรามารู้จัก Temporary Table ใน SQL Server กันเลย…..
Temporary Table ใน SQL Server มันคือ ตารางที่ถูกสร้างขึ้นเพื่อใช้สำหรับเก็บข้อมูลชั่วคราว ซึ่งจะอยู่ภายในเซสชัน (Session) หรือคอนเน็กชัน (Connection) ที่มีการสร้างมาทำงานเท่านั้นและเมื่อสิ้นสุดการทำงานของเซสชัน (Session) หรือคอนเน็กชัน (Connection) ตารางชั่วคราวนี้จะถูกลบออกโดยอัตโนมัติ หรือเราก็สามารถเขียนลบตารางนั้นได้เองอีกด้วย

Temporary Table ใน SQL Server แบ่งออกเป็น 2 ประเภทหลักๆได้แก่

  1. Local Temporary Table
  • ชื่อของตารางจะขึ้นต้นด้วย # (ตัวอย่างเช่น #TempTable)
  • ตารางนี้จะสามารถเข้าถึงได้เฉพาะเซสชันที่สร้างขึ้นเท่านั้น เมื่อเซสชันนั้นสิ้นสุด ก็จะถูกลบโดยอัตโนมัติ

2. Global Temporary Table

  • ชื่อของตารางจะขึ้นต้นด้วย ## (ตัวอย่างเช่น ##TempTable)
  • ตารางนี้จะสามารถเข้าถึงได้ทุกเซสชัน แต่จะถูกลบเมื่อไม่มีเซสชันใดใช้งาน

เรามาดูตัวอย่างกันเลย…
1. Local Temporary Table

CREATE TABLE #TempTable (
ID INT,
Name NVARCHAR(50),
AGE INT
);

INSERT INTO #TempTable (ID, Name ,AGE)
VALUES
(1, 'Alice',10),
(2, 'Bob',20);

SELECT * FROM #TempTable;
รูปภาพที่ 1 สร้าง #TempTable เเละใช้งานภายในเซสชันเดียวกัน
รูปภาพที่ 2 ใช้งาน #TempTable ต่างเซสชัน

จากตัวอย่างของ Local Temporary Table
1.
รูปภาพที่ 1 มีการสร้าง #TempTable โดยมีการเพิ่มข้อมูลลงไปใน #TempTable และมีการใช้งานโดยใช้คำสั่ง SELECT เราจะเห็นได้ว่าข้อมูลสามารถเเสดงได้เพราะอยู่ภายในเซสชัน (Session) เดียวกัน
2. รูปภาพที่ 2 มีการใช้งานโดยใช้คำสั่ง SELECT เเต่เราจะได้ข้อความผิดพลาดมา เพราะว่าไม่พบ #TempTable เนื่องจากอยู่คนละเซสชัน (Session)

2. Global Temporary Table

CREATE TABLE ##TempTable (
ID INT,
Name NVARCHAR(50),
AGE INT
);

INSERT INTO ##TempTable (ID, Name ,AGE)
VALUES
(1, 'Alice',10),
(2, 'Bob',20);

SELECT * FROM ##TempTable;
รูปภาพที่ 3 สร้าง ##TempTable เเละใช้งานภายในเซสชันเดียวกัน
รูปภาพที่ 4 ใช้งาน ##TempTable ต่างเซสชัน

จากตัวอย่างของ Global Temporary Table
1.
รูปภาพที่ 3 มีการสร้าง ##TempTableโดยมีการเพิ่มข้อมูลลงไปใน ##TempTable และมีการใช้งานโดยใช้คำสั่ง SELECT เราจะเห็นได้ว่าข้อมูลสามารถเเสดงได้ภายในเซสชัน (Session) เดียวกัน
2. รูปภาพที่ 4 มีการใช้งานโดยใช้คำสั่ง SELECT จะเห็นได้ว่าข้อมูลสามารถเเสดงได้แม้จะใช้งานต่างเซสชัน (Session)

เหตุการณ์ไหนที่เราควรใช้ Temporary Table
อาจจะเป็นเหตุการณ์ที่เราต้องการสำหรับการคำนวณหรือประมวลผลที่ซับซ้อน
ตัวอย่างง่ายๆ และส่วนใหญ่จะพบมาก คือจะใช้ Local Temporary Table

CREATE TABLE #TempTable (
ID INT,
Name NVARCHAR(50),
AGE INT
);

--เพิ่มข้อมูล
INSERT INTO #TempTable (ID, Name ,AGE)
VALUES
(1, 'Alice',10),
(2, 'Bob',20);

--แก้ไขข้อมูล
UPDATE #TempTable
SET AGE = 15
where ID =1

--แสดงผลข้อมูล
SELECT * FROM #TempTable;

--ลบตาราง
Drop table #TempTable
รูปภาพที่ 5 การใช้งาน #TempTable คำนวนและเเสดงผล

จากรูปภาพที่ 5 เราจะเห็นได้ว่าขึ้นตอนการทำงาน
1. มีการสร้างตาราง #TempTable
2. มีการเพิ่มข้อมูลให้ตาราง #TempTable
3. มีการแก้ไขข้อมูล โดยมีเงื่อนไขว่า ID ของตาราง #TempTable ที่เท่ากับ 1 ให้แก้ไข AGE เท่ากับ 15
4. มีการแสดงผลข้อมูลและพบว่าข้อมูลจากตาราง #TempTable ที่มี ID เท่ากับ 1 AGE จะแสดงเท่ากับ 15 ถึงเเม้ว่าตอนเพิ่มข้อมูลจะเพิ่มให้ AGE เท่ากับ 10 ก็ตาม
5. เป็นการลบตาราง #TempTable หลังจากใช้งาน

สุดท้าย หลังจากอ่านบทความนี้หวังว่าทุกคนสามารถเริ่มเข้าใจเเละใช้งาน Temporary Table กันนะครับลุยๆ

…………………………………….ด้วยความหวังดี ……………………………………….

นายเป็ดน้อย

--

--