【问题标题】:mysql stored procedure and triggermysql存储过程和触发器
【发布时间】:2011-12-14 01:05:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql stored-procedures triggers


    【解决方案1】:

    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;
    

    【讨论】:

    • 谢谢!!查询正确执行,但显然触发器在我的 godaddy 共享主机 linux 帐户上不起作用,因为它们尚未更新到 mysql 5.1!看起来我必须切换主机或升级到专用服务器。当我把这一切整理好后,我会使用这个信息!谢谢一百万!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    相关资源
    最近更新 更多