[pgsql-jp: 28678] Re: はじめまして
Hashimoto, Masaru
hashimoto-m @ comtecc.net
2003年 1月 15日 (水) 10:15:54 JST
はじめまして、橋本です。
いつも質問ばかりですが、私にも分かりそうだったので・・・
トリガは使ったことが無いので分かりませんが、
PL/PGSQLの構文からですと、
> table_name:="BBS.BBS02"||new.CACODE;
等の文字列を扱う場合は''(シングルクォーテーション二つ)で囲みます。
ですので、上の行は
table_name:=''BBS.BBS02''||new.CACODE;
となるかと思うんですが・・・
> new. のあたりかなとは思ってはいるんですが・・・
トリガでは、new. という表記が出来るのですか?
通常の関数だと、このnewはRECORDやROWTYPEといった
複合型変数で宣言する必要があります。
・・・うーん、こういう書き方でちゃんと回答できてますかね?
> sqlはこんな感じです。
> --------------------------------------------------------------------------------
> /*------------------------------------------------------------*
> * CREATEBBS02
> *
> * MABBS01(カテゴリマスター)にカテゴリが追加されたら
> * 対応するテーブルを作成する。
> *
> *------------------------------------------------------------*/
> CREATE FUNCTION CREATEBBS02() RETURNS OPAQUE AS '
> DECLARE
> table_name CHAR(12);
> a_output VARCHAR(4000);
> BEGIN
>
> table_name:="BBS.BBS02"||new.CACODE;
>
> a_output:="CREATE TABLE "||table_name||"(
> NWCODE CHAR(8) NOT NULL,
> NWTITL VARCHAR(64) NOT NULL,
> NWPBCD CHAR(6) NOT NULL,
> NWTEXT TEXT NOT NULL,
> NWVWFL CHAR(1) NOT NULL,
> NWPSWD VARCHAR(8) NOT NULL,
> NWPATH VARCHAR(32) NOT NULL,
> NWUPDT TIMESTAMP,
> NWINDT TIMESTAMP NOT NULL,
> CONSTRAINT P_"||table_name||" PRIMARY KEY(NWCODE),
> CONSTRAINT F_"||table_name||" FOREIGN KEY(NWPBCD) REFERENCES MASANEI03(SYCODE) MATCH FULL
> );
> COMMENT ON TABLE BBS."||table_name||" IS ""掲示板"""||table_name||";
> COMMENT ON COLUMN BBS."||table_name||".NWCODE IS ""記事コード"";
> COMMENT ON COLUMN BBS."||table_name||".NWTITL IS ""記事タイトル"";
> COMMENT ON COLUMN BBS."||table_name||".NWPBCD IS ""掲載者コード"";
> COMMENT ON COLUMN BBS."||table_name||".NWTEXT IS ""本文"";
> COMMENT ON COLUMN BBS."||table_name||".NWVWFL IS ""表示フラグ"";
> COMMENT ON COLUMN BBS."||table_name||".NWPSWD IS ""パスワード"";
> COMMENT ON COLUMN BBS."||table_name||".NWPATH IS ""ファイル名"";
> COMMENT ON COLUMN BBS."||table_name||".NWUPDT IS ""更新日"";
> COMMENT ON COLUMN BBS."||table_name||".NWINDT IS ""作成日"";";
>
> EXECUTE a_output;
> END;
> ' LANGUAGE 'plpgsql';
>
> CREATE TRIGGER CREATEBBS02 AFTER INSERT ON MABBS01
> FOR EACH ROW EXECUTE PROCEDURE CREATEBBS02();
> --------------------------------------------------------------------------------
pgsql-jp メーリングリストの案内