Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Trigger auf verschachtelte Tabelle

Sie können keinen Trigger wie „BEFORE UPDATE ON Museum.EmployeeList.birthdate“ definieren, aber Sie können einen normalen Trigger BEFORE UPDATE ON Museum schreiben und im Triggerkörper können Sie alle Mitarbeiter durchlaufen lassen, die das Datum überprüfen.

Versuchen Sie Folgendes:

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;