Oracle
 sql >> Base de données >  >> RDS >> Oracle

Déclencheur Oracle sur table imbriquée

Vous ne pouvez pas définir un déclencheur comme "BEFORE UPDATE ON Museum.EmployeeList.birthdate"Mais vous pouvez écrire un déclencheur normal BEFORE UPDATE ON Museum et dans le corps du déclencheur, vous pouvez boucler sur tous les employés vérifiant la date.

Essayez celui-ci :

CREATE OR REPLACE TRIGGER BUIR_Museum 
    BEFORE INSERT OR UPDATE ON Museum
    FOR EACH ROW

BEGIN
    IF :NEW.EmployeeList IS NOT NULL THEN
        FOR i IN :NEW.EmployeeList.FIRST..:NEW.EmployeeList.LAST LOOP
            IF :NEW.EmployeeList(i).birthdate > SYSDATE THEN
                RAISE_APPLICATION_ERROR(-20029, 'Invalid birthday');
            END IF;
        END LOOP;
    END IF;
END;