Я пытаюсь создать триггер, который вставляет некоторые оценки для студентов на конкретном курсе.Какой параметр отсутствует или он недействителен?
Есть две таблицы, оценки и курсы, я создал представление для этих таблиц, и я хочу создать триггер на этом представлении.
Триггеры необходимо сделать следующее:
- Если курс существует в course_table, то он должен вставить только класс в grades_table;
- Если курс course_table отсутствует, то он должен вставляться как в значениях grades_table, так и в поле course_table.
Я пишу этот код:
CREATE OR REPLACE TRIGGER trig_notes_students INSTEAD OF
INSERT ON view_notes_students
FOR EACH ROW
BEGIN
DECLARE temp_var NUMBER(2) := 0;
BEGIN
SET temp_var = (SELECT count(course_id) FROM course_table WHERE course_table.course_id = :new.course_id);
IF temp_var = 1 THEN
INTO grades_table(grade_id, course_id, grade_value) VALUES (:new.grade_id,:new.course_id,:new.grade_value);
ELSE
INSERT INTO course_table(course_id, course_name) VALUES (:new.course_id, :new.course_name);
INSERT INTO grades_table(grade_id, course_id, grade_value) VALUES (:new.grade_id,:new.course_id,:new.grade_value);
END IF;
END;
END;
/
Триггер создается, но я получаю эту ошибку на компиляции.
4/1 PL/SQL: SQL Statement ignored
4/5 PL/SQL: ORA-00922: missing or invalid option
Там нет оператора SET в PL/SQL. См. Руководство по назначению значений для переменных: http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/fundamentals.htm#LNPLS00205 –