Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fügen Sie eine eindeutige Einschränkung basierend auf dem Feldwert hinzu

Eigentlich können Sie das nicht bedingte Strukturen in DDL-Syntax definieren. Ihr Feld kann entweder NULL sein oder NOT NULL - Es gibt keine dritte Option (und sie kann nicht von einem anderen Feld in der Struktur abhängen )

Aber Sie können immer noch das gewünschte Verhalten über Trigger emulieren. Sie können UPDATE unterbrechen /INSERT Anweisung, wenn eingehende Daten im Sinne Ihrer Logik ungültig sind. Das geht über:

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