У меня возникла проблема с кодом триггера (мутация таблицы и многое другое!), И я не могу найти , в чем проблема.Автоматическое обновление столбца в таблице с помощью триггера
В принципе, у меня есть таблица SEMESTER (id_semester, semester_name, begin_date, end_date). При вставке строки я хочу, чтобы semester_name обновлялось со значением в соответствии с до того, что находится в begin_date. Например, если start_date является «2000-01-01», я хочу, чтобы значение semester_name было W00 (для зимы 2000 года).
Моя первая попытка состояла в том, чтобы написать триггер «после вставки», который не работал из-за ошибки в мутации. Вот оно:
CREATE TRIGGER Test
BEFORE INSERT ON Semester
FOR EACH ROW
DECLARE
sem CHAR(1);
year CHAR(2);
BEGIN
-- begin_date is either 1, 5 or 9.
IF (EXTRACT(MONTH FROM :new.begin_date) = '1') THEN
saison := 'W';
ELSIF (EXTRACT(MONTH FROM :new.begin_date) = '5') THEN
saison := 'S';
ELSE
saison := 'F';
END IF;
year := TO_CHAR(:new.date_debut, 'MM');
UPDATE Semester
SET semester_name = CONCAT(sem, year)
WHERE id_semester = :new.id_semester;
END;
/
После, я попытался сделать «перед вставкой» курок, думая, что это будет работать лучше, но это не так.
Любой может указать мне в правильном направлении? Спасибо!