2006-04-13

[pgsql] 更新可能なビューで件数取得できない

[環境] PostgreSQL 7.4.5 on i686-pc-linux-gnu

Pgsqlでビューを作成して、Ruleで更新可能なViewにしてるんだけど、Update後の件数が取得できない。

Rule : upd
CREATE OR REPLACE RULE upd AS
ON UPDATE TO v_user DO INSTEAD NOTHING;

Rule : upd_pass
CREATE OR REPLACE RULE upd_pass AS
ON UPDATE TO v_user DO INSTEAD
UPDATE v_user SET pass = new.pass,
updcd = old.userid::text::character varying,
updymd = 'now'::text::timestamp(6) with time zone
WHERE t_user.userid = old.userid;

Ruleを二段階にしているのはわけがあって、
You need an unconditional ON UPDATE DO INSTEAD rule.
というエラーが出ちゃうのでその回避のためなんだけど、これをすると今度は更新件数が取得できなくなっちゃいました。
なんかいい手立てはないものかなあ。

PgAdminで実行しても同じ結果なので、Pgsql内での問題だと思う。
"Nothing"だからしょうがないのかなあ。

ところが突然解決方法発見。
Rule : upd を
CREATE OR REPLACE RULE upd AS
ON UPDATE TO v_user DO NOTHING;
と、"INSTEAD"をのぞいたらうまくいくようになりました。
ああ、よかった。
コメントを投稿