私は次のクエリがありますCASEを使用してNULLにフィールドを設定すると、PostgreSQLがタイプについて文句を言うのはなぜですか?
UPDATE managed_avs
SET own_license_expires_at = CASE id WHEN 50 THEN NULL END
WHERE id in (50)
を私は次のエラーを取得する:
ERROR: column "own_license_expires_at" is of type timestamp without time zone but expression is of type text
LINE 1: update managed_avs set own_license_expires_at = CASE id WHEN...
^
HINT: You will need to rewrite or cast the expression.
なぜそれがCASE id WHEN 50 THEN NULL END
がtext型であることを言うのでしょうか? NULL
ではないですか?
なぜ最初に 'case'を使用しますか?文全体が 'update managed_avs SET own_license_expires_at = null where id = 50'と同等です。 –
@a_horse_with_no_nameしかし、なぜこれが起こっているのか興味深いです、あなたは説明をしていますか? 'timestamp'はPostgres AFAIKでnullableです。 –
@a_horse_with_no_nameこのクエリは生成され、複数の行を更新するためのものです。ここでは簡略化した例を示しました。 –