0

新しい記録が作成されるたびに、チューターが特定の週に 15 時間の個別指導を蓄積しているかどうかを確認するトリガーを作成しようとしています。テーブルの各レコードは 1 時間に相当します。特定のチューターの 15 レコードは 15 時間を意味します。家庭教師のすべてのレコードをカウントするように取得できますが、挿入機能で挿入された日付に基づいて、1 週間以内のレコードをカウントする必要があります。

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;

光を当てることができる人には、事前に感謝します。

4

2 に答える 2

0

最終的なコードを共有したいと思いました。完璧に動作します!!! (ブライアン、ありがとう!)

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 WorkWeek = (Select to_char(:new.MeetDate, 'YYYY IW') From Dual);
DBMS_OUTPUT.PUT_LINE(HoursWorked);
if (HoursWorked + 1) > 15 then
Raise_application_Error(-20002, 'exceeded no of hours');
end if;
end;
/
show error;
于 2013-04-29T23:35:01.823 に答える