どうもチャンクノです。
今回はpostgresqlのエラーでつまずいたお話です。
各都道府県のデータが入っているデータベースがあるのですがそれを最新のものに更新するという事故ったら死ぬタスクを任されました。
その際ローカルのDBで以下のようなSQLを叩いた時
UPDATE hoges SET hoges.area_name = 'foo', hoges.area_kana = 'bar', hoges.detail_name = NULL, hoges.detail_kana = NULL, hoges.updated_at = NOW() WHERE hoges.code = '^_^' AND hoges.area_name = 'Foo' AND hoges.detail_name IS NULL
こんなエラーが出てしまいました。
Query 1 ERROR: ERROR: column "hoges" of relation "hoges" does not exist
何これ😇
調べると「DBのスキーマ名とユーザー名が違う」、「テーブル名に大文字を含む時に出る」など出てきましたが、社の先輩に聞いたらシンプルにカラム名の前のテーブル名が不要だったみたいです。
つまり
UPDATE hoges SET area_name = 'foo', area_kana = 'bar', detail_name = NULL, detail_kana = NULL, updated_at = NOW() WHERE code = '^_^' AND area_name = 'Foo' AND detail_name IS NULL
これで良いということですね。
UPDATEの際はテーブル名を指定したらその後はテーブル名の指定が不要みたいです。
今回のタスクで確認の手順とか色々勉強になりました。
いやー、beyond beyond