Ve skutečnosti nemůžete definovat podmíněné struktury v syntaxi DDL. Vaše pole může být buď NULL
nebo NOT NULL
- neexistuje žádná třetí možnost (a nemůže záviset na jiném poli ve struktuře )
Stále však můžete emulovat požadované chování pomocí spouštěčů. UPDATE
můžete přerušit /INSERT
Pokud jsou příchozí data z hlediska vaší logiky neplatná. To lze provést prostřednictvím:
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