PostgreSQL で、 ALTER TABLE によるカラム追加時に default と NOT NULL 制約を指定できない件

PostgreSQL 7.4.3 on i586-momonga-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 (Momonga Linux 1.0 3.2.3-12m) にて確認しました。

普通に以下のSQLを実行すると、

ALTER TABLE c_member_pre ADD COLUMN login_id varchar(255) NOT NULL default '';

こんなエラーが出るわけです。

ERROR:  adding columns with defaults is not implemented

default を外してもエラーが。

ALTER TABLE c_member_pre ADD COLUMN login_id varchar(255) NOT NULL;
ERROR:  adding NOT NULL columns is not implemented

ということで以下のようにして対処しました。

ALTER TABLE c_member_pre ADD COLUMN login_id varchar(255);
ALTER TABLE c_member_pre ALTER COLUMN login_id SET DEFAULT '';
UPDATE c_member_pre SET login_id = '';
ALTER TABLE c_member_pre ALTER COLUMN login_id SET NOT NULL;

気をつけなければいけないのが、最初の ALTER TABLE で、追加したカラムには NULL 制約がついているので、 UPDATE でデフォルト値と同じものが挿入されている状態にしてから NOT NULL 制約を指定しないといけない点。

それにしてもこれは面倒くさすぎるぞちょっとどうなんだ。