-1
我在SQL Server中使用以下代碼做了MERGE
(原諒我,但我是新手,無法弄清楚如何正確縮進和格式化通過複製和粘貼我的代碼):SQL Server:MERGE導致無法將NULL值插入列
MERGE INTO DW_Datawarehouse.[dbo].[DWF_WAREHOUSE] with (HOLDLOCK) AS target
USING #DataSource AS Source
ON target.[DWF_WAREHOUSE_ORDER_NUM] = source.[DWF_WAREHOUSE_ORDER_NUM]
AND target.DWF_WAREHOUSE_ORDER_TYPE_CD = source.DWF_WAREHOUSE_ORDER_TYPE_CD
WHEN MATCHED AND
(
--all non-key fields, attributes and amounts
source.[DWF_WAREHOUSE_ORDER_DESC] <> target.[DWF_WAREHOUSE_ORDER_DESC]
or source.[DWF_WAREHOUSE_PICK_DATE_DAY] <> target.[DWF_WAREHOUSE_PICK_DATE_DAY]
or source.[DWF_WAREHOUSE_DAY_OF_WEEK_NUM] <> target.[DWF_WAREHOUSE_DAY_OF_WEEK_NUM]
or source.[DWF_WAREHOUSE_DIFF_QTY] <> target.[DWF_WAREHOUSE_DIFF_QTY]
)
THEN
UPDATE
SET target.[DWF_WAREHOUSE_ORDER_DESC] = source.[DWF_WAREHOUSE_ORDER_DESC],
target.[DWF_WAREHOUSE_PICK_DATE_DAY] = source.[DWF_WAREHOUSE_PICK_DATE_DAY],
target.[DWF_WAREHOUSE_DAY_OF_WEEK_NUM] = source.[DWF_WAREHOUSE_DAY_OF_WEEK_NUM],
target.[DWF_WAREHOUSE_DIFF_QTY] = source.[DWF_WAREHOUSE_DIFF_QTY]
WHEN NOT MATCHED BY TARGET THEN
INSERT ([DWF_WAREHOUSE_ORDER_DESC], [DWF_WAREHOUSE_PICK_DATE_DAY],
[DWF_WAREHOUSE_DAY_OF_WEEK_NUM], [DWF_WAREHOUSE_DIFF_QTY])
VALUES (source.[DWF_WAREHOUSE_ORDER_DESC], source.[DWF_WAREHOUSE_PICK_DATE_DAY],
source.[DWF_WAREHOUSE_DAY_OF_WEEK_NUM], source.[DWF_WAREHOUSE_DIFF_QTY])
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
我收到錯誤:
Cannot insert the value NULL into column 'DWF_WAREHOUSE_ORDER_NUM', table 'DW_Datawarehouse.dbo.DWF_WAREHOUSE'; column does not allow nulls. UPDATE fails.
我將如何修改我MERGE
代碼來避免這個錯誤?
你有''上表DWF_WAREHOUSE' trigger'。您當前的「合併」查詢不會產生此錯誤 –
這意味着您需要爲列「DWF_WAREHOUSE_ORDER_NUM」指定一個值。您的INSERT語句不包含此列。 – DVT