Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Adicionar restrição exclusiva com base no valor do campo


Na verdade, você não definir estruturas condicionais na sintaxe DDL. Seu campo pode ser NULL ou NOT NULL - não há terceira opção (e não pode depender de outro campo na estrutura )

Mas você ainda pode emular o comportamento desejado por meio de gatilhos. Você pode interromper UPDATE /INSERT declaração se os dados de entrada forem inválidos em termos de sua lógica. Isso pode ser feito através de:
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