Du kan faktiskt inte definiera villkorliga strukturer i DDL-syntax. Ditt fält kan vara antingen NULL
eller NOT NULL
- det finns inget tredje alternativ (och det kan inte bero på ett annat fält i struktur). )
Men du kan fortfarande emulera önskat beteende via triggers. Du kan avbryta UPDATE
/INSERT
uttalande om inkommande data är ogiltigt i termer av din logik. Det kan göras 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