2016-05-02 6 views
0


アプリケーションコードを取得するので、私はに対して潜在的に必要な変更を行うための他の方法を見ることはできませんデータはトリガを伴います。トリガー更新CLOBエラーアプリケーションがで投げている<code>rtrim</code>ハードリターンへ<a href="/questions/tagged/clob" class="post-tag" title="show questions tagged 'clob'" rel="tag">clob</a>フィールドを更新するトリガーを作成しようとしてい

返品は必ずしも追加されません。

このコードは、エラーを投げている....期待

一貫性のないデータ型はCLOBを得ました。

私は...フィールドを宣言すると、問題を回避するだろうと思ったが、非常に高く評価なし...

すべてのヘルプや提案。

名前のない馬に基づいて
CREATE OR REPLACE TRIGGER AI_master_set 
    AFTER INSERT ON base1 
    REFERENCING NEW AS NEW OLD AS OLD 
    FOR EACH ROW 
DECLARE 
    master_set CLOB; 

BEGIN  
    UPDATE base1 
     set master_set= rtrim(master_set,chr(00)) 
     WHERE master_set = :new.master_set; 

:new.master_set:= master_set;  

END; 
+2

'update'を使わないでください。ちょうど' new.master_set:= ... 'という値を割り当ててください。また、 'rtrim(master_set、chr(00))'は、トリガー内のローカル変数を初期化しないので、常にnullになります。したがって、トリガー(もしうまくいけば)は、列の値にかかわらずテーブルの列を 'null'に設定します。加えて、挿入された行を 'after'トリガで変更することはできません。 'before'トリガーが必要です –

+0

...ありがとう! – user761758

答えて

0

、およびOracle (11g) compound trigger not updating CLOB data fieldに、これは単純に動作するはずです:

CREATE OR REPLACE TRIGGER AI_master_set 
    before INSERT ON base1 
    REFERENCING NEW AS NEW OLD AS OLD 
    FOR EACH ROW 
DECLARE 
    tmp_master_set CLOB; 
BEGIN  
    tmp_master_set := rtrim(:new.master_set,chr(00)); 
    :new.master_set:= tmp_master_set ; 
END; 
/

はそれがお役に立てば幸いです。

関連する問題

 関連する問題