MySQL хранимая процедура и триггер - PullRequest
2 голосов
/ 14 декабря 2011

У меня есть таблица в mysql: (_table) с несколькими столбцами, один из которых включает в себя блок текста.Я хочу найти столбец с блоком текста (text), чтобы увидеть, содержит ли он конкретный текст [JOB].Если это так, я бы хотел вставить Y в другой столбец (data).Или, если он включает [JOB-M], я бы хотел, чтобы он вставил M в ранее упомянутый столбец (data). Если он не содержит ни [JOB-M], ни [JOB], тогда он должен вставить N.Я бы хотел, чтобы этот процесс выполнялся каждый раз, когда поле (text) обновляется или вставляется.Я понимаю, что мне нужно создать хранимую процедуру и триггер, но у меня много проблем ... какие-либо подсказки?
-Nat

ps Я знаю, как это сделать в Excel, но передача этогок mysql было хлопотно.Вот моя формула Excel:

=IF(ISNUMBER(SEARCH("[JOB]",X6)),"Y",IF(ISNUMBER(SEARCH("[JOB-M]",X6)),"M", "N"))

1 Ответ

4 голосов
/ 14 декабря 2011

Триггер INSERT и триггер UPDATE сделают свое дело:

mysql> CREATE TRIGGER TRG_BI_JOBYMN BEFORE INSERT ON _table
    -> FOR EACH ROW
    -> SET NEW.data = CASE
    ->                  WHEN `text` LIKE '%[JOB]%'   THEN 'Y'
    ->                  WHEN `text` LIKE '%[JOB-M]%' THEN 'M'
    ->                  ELSE                              'N'
    ->                END;

mysql> CREATE TRIGGER TRG_BU_JOBYMN BEFORE UPDATE ON _table
    -> FOR EACH ROW
    -> SET NEW.data = CASE
    ->                  WHEN `text` LIKE '%[JOB]%'   THEN 'Y'
    ->                  WHEN `text` LIKE '%[JOB-M]%' THEN 'M'
    ->                  ELSE                              'N'
    ->                END;
...