Oracle: как вывести предупреждение, когда значение становится отрицательным? - PullRequest
0 голосов
/ 17 января 2011

Я использую это для дисконтирования значений от plazas_disponibles. Как я могу заставить Oracle выдать предупреждение, когда plazas_disponibles достигает 0?

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; 

1 Ответ

1 голос
/ 20 января 2012

Возможно, вы захотите создать материализованное представление на основе вашего запроса:

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. Это зависит от вас, чтобы определить требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...