Изменения в MYSQL на основе значений таблицы (ограничение или триггер?)

Несколько вопросов о синтаксисе MYSQL, кажется, что найти эти ответы в Google очень сложно. Можно ли установить ограничение или триггер так, чтобы, когда значение столбца достигало определенной точки, оно сбрасывалось и что-то еще делалось. Или также, если, скажем, hourLog больше нуля, тогда статус лицензии изменяется с значения по умолчанию INVALID на Valid.

Я знаю, что все это можно сделать с помощью программы, которая использует базу данных, но мне было просто любопытно, были ли команды MYSQL, чтобы делать это автоматически с помощью триггера или ограничения.

Извините, если это было опубликовано, я просто искал быстрое разъяснение для класса.

1 ответ

Решение

Вы можете использовать эти два триггера, один для ОБНОВЛЕНИЯ, другой для ВСТАВКИ:

CREATE TRIGGER upd_yourtable BEFORE UPDATE ON yourtable 
FOR EACH ROW
  SET new.licenseStatus=
      CASE WHEN new.hourLog>0 THEN 'Valid' ELSE 'INVALID' END
;

CREATE TRIGGER ins_yourtable BEFORE INSERT ON yourtable 
FOR EACH ROW
  SET new.licenseStatus=
      CASE WHEN new.hourLog>0 THEN 'Valid' ELSE 'INVALID' END
;

Пожалуйста, смотрите скрипку здесь.

Другие вопросы по тегам