MSSQL的主檔是用是 IDENTITY自動增號欄位當KEY,而明細檔是用主檔的KEY做關連,在SQL新增主檔時IDENTITY是未知,所以明細檔無法同時新增嗎? 用SCOPE_IDENTITY()

MSSQL的主檔是用是 IDENTITY自動增號欄位當KEY

而明細檔是用主檔的KEY做關連

在SQL新增主檔時IDENTITY是未知

所以明細檔無法同時新增嗎? 

 

用SCOPE_IDENTITY()

在 SQL Server 裡,SCOPE_IDENTITY() 是一個內建函數,會回傳:

在同一個作用域(scope)內

最近一次 INSERT 到的 IDENTITY 欄位值

也就是說,

如果你有一個資料表欄位是 IDENTITY(像你的 MID),

在執行完 INSERT 之後,

用 SCOPE_IDENTITY() 就可以拿到剛新增的那一筆的 IDENTITY 值。

 

-- 新增 TB_PRODUCT_SET_M
INSERT INTO [TB].[dbo].[SET_M]
(
    [MB001],[MB002]
)
SELECT
    '{1}' AS [MB001],
    [MB002]
FROM [TB].[dbo].[SET_M]
WHERE [MB001] = '{0}';

-- 取得剛剛新增的 MID
DECLARE @NewMID INT;
SET @NewMID = SCOPE_IDENTITY();

-- 用新 MID 寫入明細
INSERT INTO [TB].[dbo].[SET_D]
(
    [MID],[SERNO],[MB001],[MB002]
)
SELECT
    @NewMID,
    [SERNO],[MB001],[MB002]
FROM [TB].[dbo].[SET_D]
WHERE [MID] = '{2}';

 

自我LV~