当 FK 值为 null 时使用数据种子 SQL 表

问题描述 投票:0回答:0

我在为包含数据中可能为 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 行,但实际数据集有数千个并且有更多列。

sql sql-server
© www.soinside.com 2019 - 2024. All rights reserved.