sql >> Base de Datos >  >> RDS >> Oracle

Cambiar valor insertado con disparador

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;