Właściwie nie zdefiniować struktury warunkowe w składni DDL. Twoje pole może mieć wartość NULL
lub NOT NULL
- nie ma trzeciej opcji (i nie może zależeć od innego pola w strukturze )
Ale nadal możesz emulować pożądane zachowanie za pomocą wyzwalaczy. Możesz przerwać UPDATE
/INSERT
oświadczenie, jeśli przychodzące dane są nieprawidłowe pod względem logiki. Można to zrobić przez:
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