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

Agregar restricción única basada en el valor del campo

En realidad, puedes no definir estructuras condicionales en sintaxis DDL. Su campo puede ser NULL o NOT NULL - no hay una tercera opción (y no puede depender de otro campo en la estructura )

Pero aún puede emular el comportamiento deseado a través de disparadores. Puedes interrumpir UPDATE /INSERT declaración si los datos entrantes no son válidos en términos de su lógica. Eso se puede hacer a través de:

CREATE TRIGGER `bannedOnCheck`
BEFORE INSERT ON `fa_ranking_system`.`Player`
FOR EACH ROW
BEGIN
  IF(new.IsBanned && new.BannedOn IS NULL) THEN
    SIGNAL 'Integrity check failed: can not set banned without ban date'
  END IF
END