สวัสดีครับ อีก 3 วันก็ปีใหม่แล้วนะครับ
วันนี้ผมไปเจอบทความอันหนึ่งมา ซึ่งจะทำให้เราเข้าใจความแตกต่างระหว่างการใช้งาน Temp Table กับ Table Variable
นะครับ ลองกันดูนะครับ
CREATE TABLE #TempTable(
Col1 VARCHAR(100)
)
DECLARE @TableVar TABLE(
Col1 VARCHAR(100)
)
INSERT INTO #TempTable( Col1 ) VALUES ( 'TempTable - Value Outside Transaction');
INSERT INTO @TableVar( Col1 ) VALUES ( 'TableVar - Value Outside Transaction');
SELECT * FROM #TempTable AS tt
SELECT * FROM @TableVar AS tv
BEGIN TRAN
INSERT INTO #TempTable( Col1 ) VALUES ( 'TempTable - Value Inside Transaction');
INSERT INTO @TableVar( Col1 ) VALUES ( 'TableVar - Value Inside Transaction');
ROLLBACK TRAN
SELECT * FROM #TempTable AS tt
SELECT * FROM @TableVar AS tv
DROP TABLE #TempTable
สรูปว่าที่เกิดมีการใช้ Transaction Scope ข้อมูลที่อยู่ใน TableVar นั้นจะไม่มีการ RollBack กับนะครับ
ยังไงก็ต้องระวังกันด้วยนะครับ