[pgsql-jp: 33025] Re: テーブル作成日時の管理方法について

ISHIDA Akio iakio @ pjam.jpweb.net
2004年 5月 29日 (土) 11:13:24 JST


こんにちは。石田@苫小牧市です。

Satou Hideki wrote:

> こんにちは。佐藤と申します。
> Redhat7.2 + Postgresql 7.4を使用しています。
> 
> エンドユーザにPostgresqlを開放していますが、テーブル(ビュー)を
> 使う際に作成日を確認できないと困るので、下記のSQLを発行して
> 必ずコメントで作成日付と時間を登録しています。
> 
> UPDATE pg_description
>    SET description =
>         to_char('now'::timestamp,'YYYY-MM-DD HH24:MI xxマスタ')
>  WHERE objoid =
>         (SELECT oid FROM pg_class WHERE relname = 'xxマスタ')
>           and objsubid = 0;
> 
> ※comment文で色々試したのですが関数の結果を組み込めずこうなりました
> 
> 現在これで問題なく運用はできているのですが、もう少しスマートに
> 登録する良い方法がないものか(comment文一発で登録できるとか)、
> ここ1年くらいこのメーリングリストや雑誌、ネット検索などで調べたり
> 何かにつけ気には掛けているのですが、未だに良い方法が見つかりません。

スマートかどうかわかりませんが、そのままpl/pgsqlで書くと、

create or replace function comment_time (text) returns void as '
begin
  execute ''COMMENT ON TABLE '' || quote_ident($1) || '' IS '' ||
      quote_literal(to_char(current_timestamp, ''YYYY-MM-DD HH24:MI ''
|| $1));
  return;
end;' language 'plpgsql';

SELECT comment_time('xxマスタ');

という感じになると思います。

それより pg_class にトリガをかけて、create table されたら
自動的に comment あるいは別のテーブルに作成日時を記録してしまう
という方法もありそうな気がします(本当に出来るかは自信ありません)。
-- 
ISHIDA Akio <iakio @ pjam.jpweb.net/iakio @ mono-space.net>



pgsql-jp メーリングリストの案内