Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Alterar valor inserido com gatilho


Na sintaxe de trigger do Oracle, o registro recém-inserido é referido por :new , não new (observe os dois pontos). Além disso, SET é parte de uma instrução de atualização, não uma maneira de definir valores de campo - eles são feitos por atribuições simples, mas observe que isso é feito com := em vez de = .
Então, seu gatilho deve ser:
CREATE OR REPLACE TRIGGER NumberOfBooks
    BEFORE INSERT
    ON book
    FOR EACH ROW
BEGIN
    IF :new.nobook < 10
    THEN
        :new.nobook := 10;
    END IF;
END;