En la sintaxis de activación de Oracle, se hace referencia al registro recién insertado mediante :new
, no new
(Observe los dos puntos). Además, SET
es parte de una declaración de actualización, no una forma de establecer valores de campo; se realizan mediante asignaciones simples, pero tenga en cuenta que se realizan con :=
en lugar de =
.
Entonces, su activador debería decir:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON book
FOR EACH ROW
BEGIN
IF :new.nobook < 10
THEN
:new.nobook := 10;
END IF;
END;