Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiungi un vincolo univoco in base al valore del campo

In realtà, puoi non definire le strutture condizionali nella sintassi DDL. Il tuo campo può essere NULL o NOT NULL - non esiste una terza opzione (e non può dipendere da un altro campo nella struttura )

Ma puoi ancora emulare il comportamento desiderato tramite i trigger. Puoi interrompere UPDATE /INSERT dichiarazione se i dati in entrata non sono validi in termini di logica. Questo può essere fatto tramite:

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