我正在嘗試創建一個觸發器,用於檢查每次創建新記錄時Tutor是否累積了15個小時的特定週期的輔導。桌子上的每個記錄等於一個小時。 15個特定教師的記錄意味着15個小時。我可以得到它來計算導師的所有記錄,但它應該根據插入函數插入的日期計算一週內的記錄。使用Next_Day功能的Sql觸發器
Create or replace Trigger Tutor_15hr_Rule
Before Insert on Meeting
For each row
Declare
HoursWorked binary_integer;
begin
select count(TutID)
into HoursWorked
from Meeting
where TutID = :new.TutID AND MeetDate Next_Day (:new.MeetDate, 'Saturday');
DBMS_OUTPUT.PUT_LINE(HoursWorked);
if (HoursWorked + 1) > 15 then
Raise_application_Error(-20002, 'exceeded no of hours');
end if;
end;
/
show error;
在此先感謝任何能點亮我的人。
感謝您的回覆。我在我的表中添加了一個'WorkWeek'屬性,它會根據MeetDate值跟蹤記錄屬於哪個工作周,然後我嘗試了以下代碼來觸發我的觸發器中的where子句,但是現在出現錯誤時嘗試將任何數據插入到表中。我在這裏做錯了什麼? code:where TutID =:new.TutID AND WorkWeek =(Select to_char(MeetDate,'YYYY IW')From Meeting Where MeetDate =:new.MeetDate); 錯誤:錯誤在第1行:ORA-01427:單行子查詢返回多個行 – 2013-04-29 23:36:11
找出來。不知道Dual是我可以使用的默認表。再次感謝! – 2013-05-01 01:36:47