トリガーを作成したい
- select staffid where dateread = 今月の日付
- staffID の数を数える
- その月のそのスタッフのカウントが 5 を超える場合
- ストップが発行されます。
これが私が私を台無しにしたことです
これが論理的に正しいかどうかを知りたいですか?ここに私のコンパイラログエラーがあります
これは私の必要な結果です: 検針員は、特定の暦月に最大 5 メートルしか読み取ることができません
マイ リーディング テーブルには
StaffID
MeterID
DateRead
ReadinID (PK)があります
エラーテキストは次のとおりです。
Error(5,7): PL/SQL: SQL Statement ignored Error(5,27):
PL/SQL:ORA-00923: FROM keyword not found where expected
C:\Users\ChrisPin\AppData\Roaming\SQL Developer\assgn2 sat4.sql Error(5,7):
PL/SQL: SQL Statement ignored Error(5,27):
PL/SQL: ORA-00923: FROM keyword not found where expected
トリガーコードは次のとおりです。
CREATE OR REPLACE TRIGGER LIMIT_5_REDINGS
BEFORE UPDATE OR INSERT ON reading
FOR EACH ROW
DECLARE
ReadingCount INTEGER; --# of depts for this employee
max_read INTEGER := 5; --max number of depts per employee.
BEGIN
select Reading COUNT(*) into ReadingCount
from (select *
from Reading
where to_char(DateRead, 'YYYY-MM') = to_char(sysdate, 'YYYY-MM'))
WHERE STAFFID = :NEW.STAFFID;
IF :OLD.STAFFID = :NEW.STAFFID THEN
RETURN;
ELSE
IF ReadingCount >= max_read THEN
RAISE_APPLICATION_ERROR (-20000,'Employees are limited to a max of two departments.');
END IF;
END IF;
END;