Nella sintassi del trigger di Oracle, il record appena inserito è indicato da :new
, non new
(notare i due punti). Inoltre, SET
fa parte di un'istruzione di aggiornamento, non un modo per impostare i valori dei campi:quelli vengono eseguiti da semplici assegnazioni, ma si noti che vengono eseguiti con :=
anziché =
.
Quindi, il tuo trigger dovrebbe leggere:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON book
FOR EACH ROW
BEGIN
IF :new.nobook < 10
THEN
:new.nobook := 10;
END IF;
END;