Trigger para validação de data | Oracle

Considerem-se as seguintes tabelas:
  • Curso

  • Disciplina

  • Disciplina no Curso


Pretende-se impedir que sejam introduzidas na tabela “Disciplina no Curso” datas de cessação inferiores à data actual. Como em Oracle não se pode validar datas comprando-as com o SYSDATE através de CHECK, então uma outra possibilidade será o da utilização de um trigger insert/update que faça essa verificação.

CREATE OR REPLACE TRIGGER trg_check_data_cessacao
     BEFORE INSERT OR UPDATE ON “Disciplina no Curso”
FOR EACH ROW
     BEGIN
       IF( :new.”Data de Cessação” > SYSDATE )
         THEN
       RAISE_APPLICATION_ERROR( -20001,
           ‘Data de Cessação inválida: esta data tem que ser maior que o valor actual da data.’);
       END IF;
     END;

Related Posts:

  • A Arte das Bases de Dados  O planeamento é a mãe de todo o sucesso. Uma ideia tão simples que se expressa numa única linha, mas que no entanto não é habitualmente levada a sério. Ao longo de cerca de um quarto de século dedicado ao ensino … Read More
  • DBA | Isolamento de transacçõesAs normas ANSI SQL determinam os seguintes três tipos de isolamento transaccional nos sistemas de gestão de bases de dados: Dirty Read. A transacção T1 modifica um facto. Outra transacção T2 lê esse mesmo facto antes que T… Read More
  • Trigger para validação de data | OracleConsiderem-se as seguintes tabelas: Curso Disciplina Disciplina no Curso Pretende-se impedir que sejam introduzidas na tabela “Disciplina no Curso” datas de cessação inferiores à data actual. Como em Oracle não … Read More
  • Data Warehousing - Conceitos e Modelos Data Warehousing - Conceitos e Modelos: é um novo livro sobre as técnicas fundamentais de desenho de data warehouses na perspectiva do modelo de dados Dimensional. É o primeiro livro desta área em Português de Portugal, é d… Read More
  • SYSDATE numa restrição CHECK em Oracle Como o valor de SYSDATE (data do sistema) é quase sempre diferente em cada momento de avaliação de uma cláusula CHECK então o Oracle não nos deixa fazer uma restrição desse tipo. Imagine-se, por exemplo, que se quer inse… Read More