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

Para la siguiente tabla:

enter image description here

Me gustaría agregar una restricción de que si el indicador de IsBanned se establece en verdadero, el campo BannedOn no se puede dejar en blanco (no se puede establecer en nulo).

¿Cómo puedo hacer esto en MySQL? Aquí está mi syntax CREATE:

CREATE TABLE IF NOT EXISTS `fa_ranking_system`.`Player` ( `PlayerID` INT NOT NULL AUTO_INCREMENT, `FK_ServerID` INT NOT NULL, `PlayerName` VARCHAR(15) NOT NULL, `RegDate` DATETIME NOT NULL, `IsBanned` TINYINT(1) NOT NULL, `LastUpdatedOn` DATETIME NOT NULL, `LastUpdatedBy` VARCHAR(20) NOT NULL, `BannedOn` DATETIME NULL, PRIMARY KEY (`PlayerID`, `FK_ServerID`), INDEX `fk_Player_Server_idx` (`FK_ServerID` ASC), CONSTRAINT `fk_Player_Server` FOREIGN KEY (`FK_ServerID`) REFERENCES `fa_ranking_system`.`Server` (`ServerID`) ON DELETE NO ACTION ON UPDATE NO ACTION) 

En realidad, no puede definir estructuras condicionales en la syntax 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 puedes emular el comportamiento deseado a través de triggers. Puede interrumpir la INSERT UPDATE / INSERT 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