2

長い列を含むaddcommentsテーブルでトリガーを作成しようとしています

CREATE OR REPLACE TRIGGER careventCommentssysc
AFTER INSERT 
ON addcomments
FOR EACH ROW
DECLARE
BEGIN
        cargetcomments(:NEW.addcode, :NEW.addcomment,  'INSERTING');
END careventCommentssysc;

これをコンパイルしようとすると、次のエラーが発生します。

ORA-04093, references to column of type LONG are not allowed in triggers.

しかし、テーブルの列タイプをlong以外に変更することはできません。

誰かが以前にこの問題を処理した場合は私を助けてください。

4

1 に答える 1

1

編集:これは、あなたが使用しているように、単純な複合トリガーで実行できると思いますORACLE 11g。したがって、これはあなたのために機能します.ループバックdblinks.Cheersは必要ありません

CREATE OR REPLACE TRIGGER careventCommentssysc FOR
   INSERT
   ON t
   COMPOUND TRIGGER
   l_new_long        LONG;

   TYPE addcomment_nt
   IS
      TABLE OF addcomments%ROWTYPE
         INDEX BY SIMPLE_INTEGER;

   v_addcomment_nt   user_id_nt;
   idx               SIMPLE_INTEGER := 0;
   -- AFTER EACH ROW Section:

   AFTER EACH ROW
   IS
   BEGIN
      idx := idx + 1;
      v_addcomment_nt (idx).addcode := :NEW.addcode;
   END
   AFTER EACH ROW;

   -- AFTER STATEMENT Section:

   AFTER STATEMENT
   IS
   BEGIN
      FOR i IN v_addcomment_nt.FIRST .. v_addcomment_nt.LAST
      LOOP
         EXECUTE IMMEDIATE 'select addcomment 
                            from addcomments 
                            where addcode = :1'
            INTO   l_new_long
            USING v_addcomment_nt (i).addcode;


         cargetcomments (v_addcomment_nt (i).addcode,
                         :l_new_long,
                         'INSERTING');
      END LOOP;
   END
   AFTER STATEMENT;

END careventCommentssysc;
于 2012-11-23T14:19:48.650 に答える