Возможно, вы захотите создать материализованное представление на основе вашего запроса:
CREATE MATERIALIZED VIEW PLAZAS_DISPONIBLES_MAT_VIEW
REFRESH ON COMMIT
AS
SELECT F.NRO_VUELO, M.CAPACIDAD, M.CAPACIDAD - COALESCE((
SELECT count(*) FROM PLAN_VUELO P
WHERE P.NRO_VUELO = F.NRO_VUELO
), 0) as PLAZAS_DISPONIBLES
FROM VUELO F
INNER JOIN MODELO M ON M.ID = F.CODIGO_AVION;
, а затем добавьте check constraint
, чтобы число (*) этого запроса не было равно 0:
ALTER TABLE PLAZAS_DISPONIBLES_MAT_VIEW
ADD CONSTRAINT PLAZAS_DISPONIBLES_CHECK CHECK (PLAZAS_DISPONIBLES != 0);
Я выбрал != 0
, но, может быть, вам нужно > 0
или < 0
. Это зависит от вас, чтобы определить требование.