У меня есть оператор обновления, который возвращает ошибку
Невозможно вставить значение NULL в столбец 'PAYMENT_AMOUNT'; Таблица подписок
Я понимаю, что мне нужно установить столбцы, которые "не являются нулевыми", которые я, возможно, не использую, но все еще в таблице, к их значениям по умолчанию. Но я не уверен, как написать это, и мне не повезло найти примеры, которые имеют отношение.
Я боюсь, что, сказав PAYMENT_AMOUNT = default, он переопределит любой из столбцов, в которых есть данные. Общая цель моего заявления об обновлении состоит в том, чтобы обновлять только определенные столбцы в одной таблице (которые не были заполнены точно), с помощью столбцов из другой таблицы с правильными данными.
UPDATE S
SET S.PAID_THRU = CASE
WHEN S.PAID_THRU IS NULL THEN TRANS.PAID_THRU
WHEN S.PRODUCT_CODE = '2019_NATL' AND S.PAID_THRU != '12/31/2019' THEN TRANS.PAID_THRU
WHEN S.PRODUCT_CODE = '2019_DIVISION' AND S.PAID_THRU != '12/31/2019' THEN TRANS.PAID_THRU
WHEN S.PRODUCT_CODE = '2019_REGION' AND S.PAID_THRU != '12/31/2019' THEN TRANS.PAID_THRU
END,
S.PAYMENT_AMOUNT = CASE
WHEN S.PAYMENT_AMOUNT = '0.00' THEN TRANS.AMOUNT
END,
S.BALANCE = CASE
WHEN S.BALANCE = '0.00' THEN (TRANS.AMOUNT - TRANS.AMOUNT)
END
FROM
name N
INNER JOIN
trans ON n.ID = trans.BT_ID
INNER JOIN
SUBSCRIPTIONS S ON TRANS.BT_ID = s.ID
WHERE
member_type = 'C'
AND join_date > '7/1/2018'
AND trans.TRANSACTION_DATE > '7/1/2018'
AND n.paid_thru = '12/31/2019'
AND trans.product_code = s.product_code
AND trans.BT_ID = s.ID