mysql存储过程和触发器

时间:2011-12-14 01:05:31

标签: mysql stored-procedures triggers

我在mysql中有一个表:(_table),有几列,其中一列包含一个文本块。我想使用文本块(text)搜索列,以查看它是否包含特定文本[JOB]。如果是,我想在另一列(Y)中插入data。或者,如果它包含[JOB-M]我希望它在前面提到的列(M)中插入data,如果它不包含[JOB-M][JOB] ,然后它应该插入N。每次更新或插入字段(text)时,我都希望它遵循此过程。 我收集我需要创建一个存储过程和一个触发器,但是我遇到了很多麻烦...任何提示? -nat

P.S。我知道如何在excel中执行此操作,但将其转移到mysql一直很麻烦。这是我的excel公式:

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

1 个答案:

答案 0 :(得分:4)

INSERT trigger and an UPDATE trigger可以解决问题:

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;