INSERT INTO #DirtyOldWIPBOM
SELECT TOP (100) PERCENT
dbo.WIP_BOM.Model,
dbo.WIP_BOM.PartNumber,
WIP_BOM.WIP
FROM dbo.WIP_BOM
LEFT OUTER JOIN dbo.BOM_CHINA
ON LTRIM(dbo.WIP_BOM.Model) = LTRIM(dbo.BOM_CHINA.Model)
AND LTRIM(dbo.WIP_BOM.PartNumber) = LTRIM(dbo.BOM_CHINA.PartNumber)
AND dbo.WIP_BOM.Qty = dbo.BOM_CHINA.Qty
AND BOM_CHINA.WIP = WIP_BOM.WIP
WHERE (dbo.BOM_CHINA.Model IS NULL)
AND EXISTS (
SELECT * FROM dbo.BOM_CHINA
WHERE WIP = WIP_BOM.WIP
AND LTRIM(Model) = LTRIM(WIP_BOM.Model)
)
SELECT TOP (100) PERCENT ... INTO #DirtyOldWIPBOM FROM ...
執行時會報錯:There is already an object named '#DirtyOldWIPBOM' in the database
SELECT INTO 會建立新資料表,若暫存表已存在(同一 Session 內先前已建立),直接報錯。INSERT INTO 要求暫存表已存在,需先用 CREATE TABLE #TempTable (...) 定義結構,再插入資料,可重複執行不衝突。CREATE TABLE #TempTable 明確定義結構(資料類型、可空性、索引),再 INSERT INTO。#WIP_DirtyOld),減少衝突機率。