我在为包含数据中可能为 NULL 的 FK 列的数据库播种时遇到问题。 这是为显示问题而构建的通用数据集,因为原始表相当大。
有两个表被引用为 FK,Location 和 Alert 表。 Alert 还具有对 Location 表的 FK 引用。
餐桌位置
表格提醒
这是我在将数据播种到其中时遇到的问题:
这个脚本:
CREATE TABLE #ItemsTemp
(
ItemName varchar(50) NOT NULL,
OutOfService bit NULL,
AlertID varchar(50) NULL,
LocationID varchar(50) NOT NULL,
)
INSERT INTO #ItemsTemp
( ItemName,OutOfService,AlertID,LocationID )
VALUES
('Item1',0,NULL,'North'),
('Item2',0,'00','North'),
('Item3',1,'00','South'),
('Item4',0,NULL,'West')
MERGE INTO dbo.Items AS target
USING
(
SELECT
I.ItemName AS ItemName,
I.OutOfService AS OutOfService,
A.AlertUk AS AlertUk,
L.LocationUk AS LocationUk
FROM #ItemsTemp I
JOIN dbo.Location L
ON L.LocationName = I.LocationID
INNER JOIN dbo.Alert A
ON A.AlertID = I.AlertID
WHERE A.LocationUk = L.LocationUk
) AS source
ON source.ItemName = target.ItemName
WHEN NOT MATCHED BY TARGET THEN
INSERT
(
ItemName,
OutOfService,
AlertUk,
LocationUk
)
VALUES
(
source.ItemName,
source.OutOfService,
source.AlertUk,
source.LocationUk
)
WHEN NOT MATCHED BY SOURCE
THEN DELETE
;
DROP TABLE #ItemsTemp
PRINT 'completed'
这个脚本返回这个:
(4 行受影响)
(2 行受影响) 完成
我可以在脚本中更改什么以将所有 4 行输入到表中?这个一般数据有 4 列和 4 行,但实际数据集有数千个并且有更多列。