Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PL/SQL trigger firing question

I have a question in regards to when a PL/SQL trigger fires.

I've written the following trigger

CREATE OR REPLACE TRIGGER gradeInputCheck
BEFORE INSERT ON GRADE 
FOR EACH ROW
DECLARE
  newGrade GRADE.NUMERIC_GRADE%TYPE := :NEW.NUMERIC_GRADE;
    grade_too_low EXCEPTION;
    grade_too_high EXCEPTION;
BEGIN
  DBMS_OUTPUT.PUT_LINE(newGrade);
    IF (newGrade < 0) THEN
        RAISE grade_too_low;
    ELSIF (newGrade > 100) THEN
        RAISE grade_too_high;
    END IF;
EXCEPTION
    WHEN grade_too_low THEN
        DBMS_OUTPUT.PUT_LINE('Grades must be between 0 and 100');
    WHEN grade_too_high THEN
        DBMS_OUTPUT.PUT_LINE('Grades must be between 0 and 100');
END;

However, when I run a simple statement like

UPDATE grade SET numeric_grade = -1;

The trigger doesn't fire. Any points on how I can make the trigger fire?

Thanks!

like image 389
user711330 Avatar asked Mar 16 '26 20:03

user711330


1 Answers

Your trigger is an insert trigger. Insert triggers do not fire for update statements. You should use something like this instead:

BEFORE UPDATE ON GRADE
like image 82
Tommi Avatar answered Mar 19 '26 12:03

Tommi