DBA | Afinação da Aplicação
Estatísticas | Oracle
Custo de Execução de Queries | Oracle
Data Warehousing – Conceitos e Modelos – 2ª Edição
Valores booleanos em bases de dados
Big Data: o tamanho importa! (Parte I)
A Arte das Bases de Dados
ISBN: 978-972-618-627-4
Trigger para validação de data | Oracle
Considerem-se as seguintes tabelas:
- Curso
- Disciplina
- Disciplina no Curso
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;
SYSDATE numa restrição CHECK em Oracle
[Data de Fim] > SYSDATE
30-JAN-2012 > 26-DEC-2011
………………………………………
30-JAN-2012 > 10-FEB-2013
O valor de SYSDATE vai aumentando até ultrapassar o valor inserido na coluna, tornando o CHECK inválido e, consequentemente, a base de dados inconsistente. Dai não ser possível utilizar este tipo de regra de (anti)-integridade.
A validação terá que ser feita por intermédio de um trigger do tipo BEFORE INSERT OR UPDATE.