2011-12-11 18 views
0

私は以下の作業を行っています。Oracleトリガー作成の問題

STAFF_TRIGGERという名前のPL/SQLトリガーをSTAFF表に作成します。この トリガーは、挿入または更新ごとに実行されます。 a。挿入の場合、 このトリガーでは、新しいSTAFF.STAFF_ID値、ユーザーは MOD_USER、システム日付はMOD_TIMESTAMPに設定して、データの をSTAFF_LOGに記録する必要があります。 b。更新の場合、このトリガーは、 の前のSTAFF値を対応するSTAFF_LOG列に とし、MOD_USERとMOD_TIMESTAMPを記録するようにします。

これまでのところ、これは私が持っているものです。私はOracleデータベースExpress Editionを使用しています。

create trigger staff_trigger 
after insert or update on staff 
for each row 

begin 

if inserting then 
    insert into staff_log (staff_id, mod_user, mod_timestamp) 
    values(new.employee_id, new.last_name, sysdate); 
end if; 

if updating then 
    insert into staff_log (mod_user, mod_timestamp) 
    values(new.last_name, sysdate); 
end if; 

end; 

コードを実行すると、以下のエラーが表示されます。

ERROR at line 9: PL/SQL: SQL Statement ignored7. if inserting then 
8. insert into staff_log (staff_id, mod_user, mod_timestamp) 
9. values(new.employee_id, new.last_name, sysdate); 
10. end if; 

何が原因である可能性がありますか?

+1

ヒント:あなたはあなたのポスト内のコードを入れているときは、コードを選択し、 '{}'のように見えるボタンをクリックしてください。これにより、コードが書式設定され、読みやすくなります。 –

答えて

1

:newの代わりに、new)これを試して

create trigger staff_trigger 
after insert or update on staff 
for each row 

begin 

if inserting then 
    insert into staff_log (staff_id, mod_user, mod_timestamp) 
    values(:new.employee_id, :new.last_name, sysdate); 
end if; 

if updating then 
    insert into staff_log (mod_user, mod_timestamp) 
    values(:new.last_name, sysdate); 
end if; 

end; 
+0

その作品....ありがとう! – daniel

+0

@ダニエルあなたは大歓迎です:-)回答を受け入れたとマークすることを忘れないでください(http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work参照)。 – Yahia