您好我正在尝试执行以下更新语句
UPDATE rebate_admin.PRODUCT_REBATE_ITEM_RULE_GROUP SET rule_priority_Nbr =
CASE
WHEN ( rule_priority_Nbr = 3) THEN (rule_priority_Nbr+1)
WHEN ( rule_priority_Nbr = 4 ) THEN (rule_priority_Nbr-1)
END
WHERE DEFAULT_RULE_IND = 1 AND ACTIVE_IND= 1 AND RULE_PRIORITY_NBR NOT IN (9999999900, 1)
AND PRODUCT_REBATE_DETAIL_SEQ IN (843 )
失败并显示错误:
无法将(%s)更新为NULL。
答案 0 :(得分:1)
rule_priority_Nbr列上有NOT NULL约束。你的CASE语句没有ELSE,所以当rule_priority_Nbr不是3而不是4时,CASE将返回null
例如尝试这样
UPDATE rebate_admin.PRODUCT_REBATE_ITEM_RULE_GROUP
SET rule_priority_Nbr =
CASE WHEN ( rule_priority_Nbr = 3) THEN (rule_priority_Nbr+1)
WHEN ( rule_priority_Nbr = 4 ) THEN (rule_priority_Nbr-1)
ELSE rule_priority_Nbr
END
WHERE DEFAULT_RULE_IND = 1
AND ACTIVE_IND= 1
AND RULE_PRIORITY_NBR NOT IN (9999999900, 1)
AND PRODUCT_REBATE_DETAIL_SEQ IN (843 )