0

statusDB Oracle を初めて使用します。Clarity (プロジェクトおよびポートフォリオ管理アプリケーション) で新しいリクエストを作成するとき、またはリクエストのステータスを変更するときに、フィールドを の新しい値に更新したいと考えていますmb_status_idea

次のクエリは Update の場合はうまく機能しますが、新しいリクエストを作成するとステータスが更新されません。(したがって、ステータスはステータス MB と等しくありません)。

IF ( :old.mb_status_idea != :new.mb_status_idea) 
THEN  update inv_investments a 
set a.status = stat 
where a.id=:new.id ;
END IF;

問題は、新しいリクエストを作成するときに、挿入トリガーのOLDにNO VALUEが含まれているため、条件がfalseになり、ステータスが更新されないことだと思います。

注: フィールドstatusはテーブル INV_INVETMENTS (stat := :new.mb_status_idea) にあり、ステータス MB のデータベース列はmb_status_idea

この条件も追加しました --> or (:old.mb_status_idea is null) ですが、やはり新規リクエストを作成すると、「Status」と「status MB」の値が異なります(statusが更新されません)。

誰かがこの問題を克服するのを手伝ってくれたら幸いです。

すべてのアイデアは高く評価され、

モナ

4

1 に答える 1

1

Clarity では、いくつかの理由からトリガーを使用しないことをお勧めします。ジョブやプロセスは、アプリケーションを介して編集が行われるとき以外に、一部のフィールドの値を変更することがあります。これらを制御することはできません。CA ホスティング サービスを使用する場合、トリガーは使用できません。アップグレード プロセスによってトリガーが破損するため、アップグレードのためにトリガーを削除する必要があります。

このタイプのアクションには、プロセス エンジンを使用することをお勧めします。フィールドが更新されるたびに実行するプロセスを設定できます。更新は、カスタム スクリプトまたはシステム アクションによって実行できます。システム アクションの設定はかなり簡単です。カスタム スクリプトを使用する場合は、管理書棚のドキュメントに例があります。SQL 更新ステートメントを作成し、それを GEL スクリプトに入れます。

于 2014-04-08T22:24:35.970 に答える