sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo crear un índice único de 'doble cara' en dos campos?

¿Qué tal controlar lo que entra en la tabla para que siempre almacene el número más pequeño en la primera columna y el más grande en la segunda? Siempre y cuando 'signifique' lo mismo, por supuesto. Probablemente sea menos costoso hacerlo incluso antes de que llegue a la base de datos.

Si esto es imposible, puede guardar los campos como están, pero duplicarlos en orden numérico en OTROS campos, en los que crearía la clave principal (pseudocódigo-ish):

COLUMN A : 2
COLUMN B : 1

COLUMN A_PK : 1  ( if new.a < new.b then new.a else new.b )
COLUMN B_PK : 2  ( if new.b > new.a then new.b else new.a )

Esto podría hacerse fácilmente con un activador (como en la respuesta de Ronald) o manejarse más arriba, en la aplicación.