W składni wyzwalacza Oracle nowo wstawiony rekord jest określany przez :new
, a nie new
(zwróć uwagę na dwukropek). Dodatkowo SET
jest częścią instrukcji aktualizacji, a nie sposobem na ustawienie wartości pól — robi się to za pomocą prostych przypisań, ale pamiętaj, że robi się to za pomocą :=
zamiast =
.
Więc Twój wyzwalacz powinien brzmieć:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON book
FOR EACH ROW
BEGIN
IF :new.nobook < 10
THEN
:new.nobook := 10;
END IF;
END;