Nie możesz zdefiniować wyzwalacza, takiego jak „PRZED AKTUALIZACJĄ W Muzeum.EmployeeList.birthdate”Ale możesz napisać normalny wyzwalacz PRZED AKTUALIZACJĄ W Muzeum, a w treści wyzwalacza możesz zapętlić wszystkich pracowników, sprawdzając datę.
Wypróbuj ten:
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;