【发布时间】:2014-06-19 20:06:27
【问题描述】:
我正在为班级工作一个项目,在该项目中,我们必须设置一个触发器,当学生缺席 5 次或更多时,不允许他们报名参加辅导预约。它编译时没有错误,但是当我插入违反约束的记录时,我无法触发它。如果有人能指出我哪里出错或指出我正确的方向,我将不胜感激,我已经为此苦苦挣扎了一段时间。
CREATE OR REPLACE TRIGGER absence_violation
BEFORE INSERT ON appointment FOR EACH ROW
DECLARE
absences NUMBER(1);
BEGIN
SELECT COUNT(app_attendance)
INTO absences
FROM appointment
WHERE app_attendance = 'N'
AND stu_id = :new.stu_id;
IF absences >= 5 THEN
dbms_output.put_line('ERROR 223, Student Exceeds Absence Violations');
END IF;
END;
【问题讨论】:
-
它可能正在触发,但它没有可见的效果,因为它所做的只是向 dbms_output 发送一条消息,这可能在您的会话中被禁用。但是这里的问题是您的触发器正在查询同一个表,这不起作用。
标签: database oracle triggers oracle10g