[pgsql-jp: 30632] PL/pgSQLで"(09:00)AAA"から"AAA"のみを抜き出すには?

aiko_0303 @ infoseek.jp aiko_0303 @ infoseek.jp
2003年 7月 29日 (火) 19:08:50 JST


お世話になっております。kishikawaです。

現在、PL/pgSQL を使用してトリガを作成しています。

・TBL1のINSERT or UPDATEがあったときに呼び出される。
・TBL1の'氏名(name)'列データ更新時に、TBL2の'備考(ref)'列に「(HH:MM)氏名データ(改行コード)」
  の形式で書き込まれる。


この方法で、
TBL1の氏名更新時に、TBL2の'備考(ref)'列に同じ氏名データがある場合は書き込まない
(※時間は違っても良い)という処理を入れたいのですが、PL/pgSQLでのやり方が分かりません。

全データから(HH:MM)を取り除いたデータと新しく書き込まれる氏名データが一致すれば、
書き込み処理を行わないということなのですが。

正規表現等を使用すれば良いのでしょうか?

どなたか教えてください。よろしくお願いします。



以下がソースです。
********************************************
CREATE FUNCTION tbl_trigger01() RETURNS OPAQUE
AS '
DECLARE
  sRefNew  TBL2.ref%TYPE; -- TBL2に追加書き込みするデータ格納用
  sRefOld	  TBL2.ref%TYPE; -- TBL2に追加書き込みするデータ格納用
  sNowTime TIMESTAMP;     -- UPDATE or INSERTするTBL2の主キー用
  sNowHHII TEXT;          -- 現在時間HH:M
  sNowDATE TEXT;          -- 現在時間HH:M
BEGIN

  -- 氏名が''だったら何もしない
  IF NEW.name ISNULL OR NEW.name = '''' THEN
    RETURN NEW;
  END IF ;
  -- 現在時刻を取得
  sNowTime := ''now'' ;
  sNowDATE := to_char(sNowTime, ''YYYY-MM-DD 00:00:00'');
  sNowHHII := to_char(sNowTime, ''HH24:MI'');

  -- TBL2に該当データがあるか?
  SELECT ref INTO sRefOld FROM TBL2 WHERE key = NEW.key 
  AND date_key = sNowDATE ;

  -- TBL2に記入する内容を作成する ※(HH:MM)氏名データ
  sRefNew :=''('' || sNowHHII || '')''|| NEW.name ;
  IF NOT FOUND THEN
    -- TBL2にデータをINSERTする。
    INSERT INTO TBL2 (
          key,
          date_key,
          ref  ) VALUES ( 
          NEW.key	,
	sNowDATE::TIMESTAMP,
	sRefNew
    );
  ELSE
    -- TBL2に記入する内容を作成する 
    -- 前データは入っているか?
    IF sRefOld ISNULL OR sRefOld = '''' THEN
      -- (HH:MM)氏名データ のみをUPDATE
    ELSE
      -- 前データ + (改行コード)+ (HH:MM)氏名データ をUPDATE
      sRefNew := sRefOld || ''\n'' || sRefNew  ;

--@@@@@@@@@@@@
--前データが(09:10)山田太郎 
--新規データが(10:00)山田太郎の場合は追記書き込みしない!!
--
--	ここの比較方法で詰まっています…
--@@@@@@@@@@@@

    END IF ;
    -- TBL2にデータをUPDATEする。
    UPDATE TBL2 SET ref= sRefNew WHERE
    key = NEW.key AND date_key = sNowDATE::TIMESTAMP ;
  END IF ;

  RETURN NEW ;
END ;
' LANGUAGE 'plpgsql' ;
********************************************





******************
    aiko.K
******************
------------------------------------------------------------------------
花火より 恋するあなたへ アドバイス by infoseek
http://ap.infoseek.co.jp/uranai3.html  

 

 






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