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~