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