sql >> Databáze >  >> RDS >> Mysql

Přidejte jedinečné omezení založené na hodnotě pole

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



  1. Jak zobrazit datum ve formátu iso 8601 pomocí PHP

  2. Porovnejte podobnosti mezi dvěma sadami výsledků

  3. Vypočítejte percentil z frekvence v MySQL

  4. SQLite Group By