我有一個表,external_uuid只有當該列已經沒有值時,我才想更新該列:
private const val updateSql = """
update customer
set
external_id = :externalId,
external_uuid = CASE when external_uuid is null then external_uuid = :externalUuid END,
name = :name,
address = :address,
zip_code = :zipCode,
zip_area = :zipArea,
country_code = :countryCode,
is_deleted = :markedForRemoval
where is_deleted = false AND (external_uuid = :externalUuid OR (external_id = :externalId AND external_subcustomer = :subCustomer))
"""
但是,如果我進行這樣的更新,則會出現錯誤:
ERROR: column "external_uuid" is of type uuid but expression is of type boolean
如何在更新時有條件地只設定一列?
uj5u.com熱心網友回復:
您的CASE運算式回傳此布爾運算式的結果:
external_uuid = :externalUuid
這可能true或false也不能存盤在定義為的列中uuid,這就是您收到錯誤的原因。
你應該這樣寫:
external_uuid = CASE when external_uuid is null then :externalUuid else external_uuid END
或者:
external_uuid = coalesce(external_uuid, :externalUuid)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/389921.html
標籤:sql PostgreSQL的 sql更新 案件 合并
