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;