आप इस प्रतिबंध को शाप टैबेल पर डालने या अद्यतन ट्रिगर के बाद देख सकते हैं।
CREATE or replace TRIGGER check_leader
AFTER INSERT OR UPDATE ON Course
FOR EACH ROW
declare
v_type varchar2(30);
BEGIN
select type into v_type from stuff where :NEW.leader_id = stuff.stuff_id;
if v_type != 'teacher' then
RAISE_APPLICATION_ERROR(-20000, 'course leader must be teacher');
end if;
end;
/
लेकिन आपको स्टाफ टेबल पर एक और ट्रिगर की आवश्यकता है। सामान प्रकार के परिवर्तन के मामले में (शिक्षक से क्लीनर तक) इसे शाप तालिका में प्रविष्टियों के लिए जांचना होगा।
CREATE or replace TRIGGER check_courses
AFTER UPDATE ON STUFF
FOR EACH ROW
declare
v_num number;
BEGIN
if :OLD.type = 'teacher' and :NEW.type != 'teacher' then
select count(*) into v_num from curses where courses.leader_id = :NEW.stuff_id;
if v_num > 0 then
RAISE_APPLICATION_ERROR(-20000, 'there are courses assigned ');
end if;
end if;
end;
/