0
create or replace trigger "STUDENT_PERSONAL_DETAIL_T1" 
AFTER insert or update or delete on "STUDENT_PERSONAL_DETAIL" 
for each row 
begin 
  insert into fa1 (s_id,name,class,sec) 
  select reg_no,name,class,sec 
  from inserted 
end;

これは、Oracle xe トリガー作成インターフェースを使用して作成されたトリガーです。

エラーなしで作成されますが、表で挿入が呼び出されるとトリガーエラーが表示され trigger failed -ORA-04098 is invalid and failed re-validationます。

ガイダンスと提案は大いに役立ちます。

4

2 に答える 2

3

以下を使用する必要があります。

REFERENCING new AS new
...
BEGIN
     INSERT INTO fa1(s_id, name, class, sec)
          VALUES (:new.reg_no, :new.name, :new.class, :new.sec);
...
于 2012-10-02T15:48:14.853 に答える
0

次のようなテーブルがないため、この select ステートメントは無効です。inserted

select reg_no,name,class,sec 
from inserted 

編集挿入された値をテーブル fa1 に記録する場合は、テーブルに次の列がある場合、次のようにしますSTUDENT_PERSONAL_DETAILreg_no,name,class,sec

create or replace trigger "STUDENT_PERSONAL_DETAIL_T1" 
AFTER insert on "STUDENT_PERSONAL_DETAIL" 
for each row 
begin 
  insert into fa1 (s_id,name,class,sec) 
  values (:new.reg_no, :new.name, :new.class, :new.sec)
end;

句に注意してくださいAFTER insert on "STUDENT_PERSONAL_DETAIL"or update or deleteこれが新しく挿入されたレコードに対してのみトリガーされることを確認するために省略しました。(「挿入された」テーブルから選択しようとしたため、それがあなたのやりたいことだと結論付けました)

于 2012-10-02T15:45:02.467 に答える