具有条件的MySQL更新触发器

时间:2012-10-19 22:59:06

标签: mysql if-statement triggers case

我有一个PHP应用程序,将'Pass','Fail'或'NA'插入字段TEST1,TEST2,TEST3 ......到TEST15。

我有一个名为OVERALL的字段,如果任何TEST1-TEST15字段包含'Fail',则需要使用'FAIL'自动更新。

我很确定我需要使用包含更新语句和CASE或IF的触发器,但我无法确定确切的语法。

任何人都可以帮助一个MySQL菜鸟吗?我正在使用MySQL Server版本:5.1.63-0 + squeeze1(Debian)。

2 个答案:

答案 0 :(得分:0)

你可能会做类似

的事情
CREATE TRIGGER triggerName AFTER INSERT ON yourTable
FOR EACH ROW BEGIN
    IF NEW.yourColumn = 'Fail' THEN
        UPDATE otherField set column = 'Fail'
    END IF;
END

这就是理论上这样一个触发器的样子,但是我必须说我不是100%的语法,因为我已经有一段时间了,因为我在mysql上工作了。

您可以查看手册以获取触发器上的更多信息 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

答案 1 :(得分:0)

好的,这是另一个TRIGGER你可以尝试一下。我测试了它,如果插入行的test1或test2中的值为FAIL,它应该将整个字段更改为FAIL。除了您要插入的行之外,它不会为任何其他行设置整体字段。

TRIGGER的代码:

DELIMITER |

CREATE TRIGGER setoverall BEFORE INSERT ON table_name
  FOR EACH ROW BEGIN
    IF NEW.test1 = 'FAIL' OR NEW.test2 = 'FAIL' THEN
        SET NEW.overall = 'FAIL';
    END IF;
  END;
|

您需要做的只是输入正确的表名,并检查表中的所有其他13个测试列(如果它们的值为FAIL)。我希望这对你有所帮助,如果有什么不清楚,请告诉我。