をトリガー2つのことを達成するためにオラクルは、私は以下の表を持って、エラーORA-01427&エラーORA-04091
(1)faculty_idが教職員テーブルで更新されたとき。トリガーは発火し、コーステーブルの対応する行を新しいfaculty_idで更新します。また、古いfaculty_id値、コース名、および操作が実行された日付をcourse_logテーブルに格納します。以下は
私は
create or replace trigger update_faculty
after update on faculty
for each row
begin
insert into course_log
values (:old.faculty_id,
(select course_name
from course
where faculty=:old.faculty_id),
sysdate);
update course
set faculty=:new.faculty_id
where faculty=:old.faculty_id;
end;
得たものである。しかし、私は次のエラーを取得します。
トリガーの実行中にエラー: "SYSTEM.UPDATE_FACULTY"、ライン2 ORA-04088でエラーORA-01427:単一行のサブクエリは、複数の行ORA-06512を返し 'SYSTEM.UPDATE_FACULTY'
解決方法に関するアイデアはありますか?
(2)コーステーブルのcourse_id属性を変更すると起動するトリガーを作成します。これにより、値が既にコーステーブルに存在するかどうかがチェックされ、新しい値であれば正常に更新されます。値がすでにどの行にも存在する場合、トリガーは「course_idは既に存在します!更新に失敗しました」というアプリケーションエラーをスローします。以下
は私のクエリCREATE OR REPLACE TRIGGER "UPDATE_COURSE_ID"
after update on course
for each row
declare
error number;
begin
select count(*)
into error
from course
where course_id=:new.course_id;
if error > 0 then
raise_application_error (-20000,'The course_id already found! Update not success');
end if;
if error = 0 then
update course set course_id=:new.course_id where course_id=:old.course_id;
end if;
end;
あるしかし、私はこのエラーを得た
エラーORA-04091:表のSYSTEM.COURSEが変異され、トリガー/関数はそれにORA-06512が表示されない場合がありますでORA-04088:トリガ 'SYSTEM.UPDATE_COURSE_ID'の実行中にエラーが発生しました。
この宿題はありますか? –
それは私がトリガーで練習するために得たいくつかの練習です。あなたは助けることができますか? – user1382242