「postgreSQL」alterめんどくさい

今の案件のDBのバージョンが古いからなんか、
自分がposgreに慣れてないだけなんか、
posgre自体が使いにくいだけなんか・・・
とにかく、めんどくさい。(ちなみに7.4・・・古っ)
とりあえず型の変更ができへん。ただこれは
なんかバージョン8以降はできるらしいけど。
varchar(10)からvarchar(16)に変更しよと思ったら
新たに16のカラム作って、データコピーして、
元カラム削除して、新カラムをリネームとか・・・。
他にも、カラムの追加がめんどくさい
たとえば
# alter table m_customer add column customer_type_id integer not null default 9;
特に何の変哲も無いクエリ。がしかし、流してみると、↓
ERROR: adding columns with defaults is not implemented
HINT: Add the column, then use ALTER TABLE SET DEFAULT
って怒られる。
defaultを外してみたりしても、ことごとく怒られる。
 最終的に、・・・・↓
# alter table m_customer add column customer_type_id integer ;
# alter table m_customer alter column customer_type_id set default 9 ;
# update m_customer set customer_type_id = 9 ;
# alter table m_customer alter column customer_type_id set not null ;
・プレーンなカラムを追加
・default設定
・既存データをupdate
・not null成約つけちゃう
MJK !?
よくみると日本postfreSQLユーザ会の日本語ドキュメントに書いてある
現在の実装では、新規列のデフォルト句と制約句は無視されます。
後で ALTER TABLE の SET DEFAULT を使用してデフォルト句を設定することができます。
(また、 UPDATE を 使用して、新しいデフォルト値で既存の行を更新する必要がでてきます。)
ん、「現在の実装では」って何やろ。
もしかしたら最新バージョンやったらもと手軽にできるとか・・・
調べようと思ったけど断念。とりあえず7.4ではこうせなアカンみたい。
う~ん、やっぱドキュメントはちゃんと読まなあかんなぁ。

0 件のコメント :

コメントを投稿