答案 0 :(得分:1)
让我们开始说,使用触发器来强制关系完整性而不是外键约束是最糟糕的做法。 RI触发器很慢,它们不能很好地扩展,它们不能在多用户环境中工作,它们在必须维护代码的可怜的折磨者之间引起了不必要的麻烦。
因此,这是正常运行的最坏做法触发器的外观:
create or replace trigger section_timeslot_trg
before insert or update on section
for each row
declare
l_id timeslot.timeslot_id%type;
begin
select ts.timeslot_id
into l_id
from timeslot ts
where ts.timeslot_id = :new.timeslot_id;
exception
when no_data_found then
raise_application_error(-20999, 'Not a valid TIMESLOT_ID: '||:new.timeslot_id);
end;
请记住,在没有外键约束的情况下,需要在TIMESLOT上有一个相互触发,以防止更新和删除SECTION中使用的TIMESLOT_ID。