2011-10-26 11 views
0

現在、私が書いているトリガーに問題があります。私は、ステータスフィールドが 'Sent'に設定されたSTATEMENTを更新した後、id、date、user、およびlastフィールドのようなフィールドを持つテーブルに新しい行を作成する簡単なトリガーを実行したい特定のフィールド値を取って「通知」を作成するメッセージ。SQL/Oracle 10g - トリガーのトラブル/テーブルからの値の取得

それが役立つならば、私のSTATEMENTテーブルには、次のフィールドが含まれています

  • ID
  • リスト項目
  • タイトルで、だから、

を知る必要がありません

  • その他挿入されるNOTICEの最後のフィールドは、私はメッセージのように作成したい、おそらく "(ID) - (タイトル)、(日付)に発行されたステートメントsが送られました。 "

    私は現在、現時点ではしている:

    create trigger send_notice 
        after update on STATEMENT 
        for each row 
        when (new.status = 'Sent') 
    begin 
        insert into NOTICE values (notice_seq.nextval, SYSDATE, '10001', 'the notice 
        im having trouble constructing'); 
    end send_notice; 
    

    私は、データベースにこのトリガーをテストしているし、すべてが正常に動作するようです。私がちょうど疑問に思っていたもう一つのことは、書式設定の場合、またはこのトリガーに役立つかもしれない何かがない場合です。また、私はステートメントからフィールド値を取るその通知を作成するつもりですか?

    すべてのヘルプは、あなたが使用してトリガーに新しいステートメントの列の値を参照することができ

  • 答えて

    3

    を高く評価されています。新しい、そしてあなたのテキストにそれらを連結:

    create trigger send_notice 
        after update on STATEMENT 
        for each row 
        when (new.status = 'Sent') 
    begin 
        insert into NOTICE values (notice_seq.nextval, SYSDATE, '10001', 
        'The statement, ' || :new.id || ' - ' || :new.title || ', issued on ' 
        || :new.issue_date || ' has been sent'); 
    end send_notice; 
    

    は時々テキストと値の多くを連結します混乱を招く可能性があります。この「テンプレート」アプローチを使用する方が簡単です。

    create trigger send_notice 
        after update on STATEMENT 
        for each row 
        when (new.status = 'Sent') 
    declare 
        l_text varchar2(500); 
    begin 
        l_text := 'The statement, #ID# - #TITLE#, issued on #DATE# has been sent'; 
        l_text := replace (l_text, '#ID#', :new.id); 
        l_text := replace (l_text, '#TITLE#', :new.title); 
        l_text := replace (l_text, '#DATE#', :new.issue_date); 
        insert into NOTICE values (notice_seq.nextval, SYSDATE, '10001', l_text); 
    end send_notice; 
    
    +0

    これは機能します。非常にありがとう:)テンプレートのアプローチにも感謝します。それは実際にはあまり混乱しません。 – George

    関連する問題