Necesito asegurarme de que mi base de datos sólo contiene entradas donde dos o más de sus columnas son únicas. Esto puede lograrse fácilmente con una UNIQUE
restricción sobre esas columnas.
En mi caso, necesito prohibir la duplicación sólo para rangos de tiempo superpuestos. La tabla tiene valid_from
y valid_to
columnas. En algunos casos, uno podría necesitar primero expirar la entrada activa a valid_to = now
, y luego insertar una nueva entrada ajustada a valid_from = now
y valid_to = infinity
.
Parece que puedo expirar la entrada anterior sin problemas usando UPDATE
, pero insertar la nueva entrada parece ser problemático ya que mis columnas base están actualmente UNIQUE
, y por lo tanto no pueden ser añadidas de nuevo
Pensé en añadir valid_from
y valid_to
como parte de la UNIQUE
restricción, pero eso sólo haría que la restricción sea más suelta, y permitiría
duplicados y rangos de tiempo superpuestos para existir.