Oracle
 sql >> Database >  >> RDS >> Oracle

Modifica il valore inserito con il trigger

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;