Bạn không thể xác định một trình kích hoạt như "TRƯỚC KHI CẬP NHẬT TRÊN Museum.EpriseeList.birthdate" Nhưng bạn có thể viết một trình kích hoạt bình thường TRƯỚC KHI CẬP NHẬT VỀ Museum và trong phần thân trình kích hoạt, bạn có thể lặp lại tất cả nhân viên đang kiểm tra ngày.
Hãy thử cái này:
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;