En fait, vous ne pouvez pas définir des structures conditionnelles dans la syntaxe DDL. Votre champ peut être soit NULL
ou NOT NULL
- il n'y a pas de troisième option (et cela ne peut pas dépendre d'un autre champ dans la structure )
Mais vous pouvez toujours émuler le comportement souhaité via des déclencheurs. Vous pouvez interrompre UPDATE
/INSERT
déclaration si les données entrantes ne sont pas valides en termes de votre logique. Cela peut être fait via :
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