Eu preciso garantir que minha base de dados contenha apenas entradas onde duas ou mais de suas colunas sejam únicas. Isto pode ser facilmente alcançado com uma UNIQUE
restrição sobre essas colunas.
No meu caso, preciso de proibir a duplicação apenas por sobreposição de intervalos de tempo. A tabela tem valid_from
e valid_to
colunas. Em alguns casos pode ser necessário primeiro expirar a entrada ativa definindo valid_to = now
, e depois inserindo uma nova entrada ajustada valid_from = now
e valid_to = infinity
.
Parece que posso expirar a entrada anterior sem problemas usando UPDATE
, mas inserir a nova entrada parece ser problemático, uma vez que minhas colunas base estão atualmente UNIQUE
, e portanto não podem ser adicionadas novamente
Pensei em adicionar valid_from
e valid_to
como parte da UNIQUE
restrição, mas isso só iria tornar a restrição mais solta, e permitir
duplicações e sobreposições de intervalos de tempo para existir.