Измените вставленное значение с помощью триггера
-
21-12-2019 - |
Вопрос
Я только начал изучать SQL несколько недель назад и пытаюсь создать триггер, который изменяет вставленное значение на 10, если оно меньше 10.Я искал уже 4 часа и нашел много ответов, но ни один из них не был хорошим (для меня).Я действительно не понимаю, в чем проблема.Вот код:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON Book
FOR EACH ROW
BEGIN
IF new.nobook < 10
THEN
SET new.nobook = 10;
END IF;
END;
Решение
В синтаксисе триггера Oracle на вновь вставленную запись ссылается :new
, не new
(обратите внимание на двоеточие).Дополнительно, SET
является частью инструкции update, а не способом установки значений полей - это делается с помощью простых присваиваний, но обратите внимание, что это делается с помощью :=
скорее, чем =
.
Итак, ваш триггер должен читать:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON book
FOR EACH ROW
BEGIN
IF :new.nobook < 10
THEN
:new.nobook := 10;
END IF;
END;
Не связан с StackOverflow