我想插入觸發之前禁用在插入表時INSERT觸發器
create or replace trigger CHECK_FOR_MAX_ENTRANTS
before insert on application
declare
entrants_count number;
max_entrants number;
begin
select count(*) into entrants_count from application
where id_speciality = :new.id_speciality;
select max_students_number into max_entrants from speciality s
where s.id_speciality = :new.id_speciality;
IF entrants_count >= max_entrants THEN
**disable this insert**
end;
我怎樣才能做到這一些條件爲真之前?
這種方法的另一個問題是,兩個併發事務可以插入「最後」一個允許的記錄,因爲他們看不到其他的記錄呢。 – 2011-06-10 19:27:54
此方法的其他一些問題包括: – 2011-06-13 13:17:10
PS。我很快就點擊了「添加評論」。我想說...這種方法的其他一些問題包括:a)如果max_entrants.max_students_number更新爲更小的數字會怎樣?如果超過max_students_number,應用程序中的相關行會發生什麼? b)如果application.speciality更新會怎麼樣?這可能會導致計數超過相關的max_entrants.max_students_number。 – 2011-06-13 13:39:28