1

我有一个 PHP 应用程序,可将“通过”、“失败”或“NA”插入字段 TEST1、TEST2、TEST3 ... 到 TEST15。

如果任何 TEST1-TEST15 字段包含“失败”,我有一个名为 OVERALL 的字段需要自动更新为“失败”。

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

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

4

2 回答 2

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的更多信息

于 2012-10-19T23:08:30.260 回答
0

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

触发器的代码:

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。我希望这对您有所帮助,如果有任何不清楚的地方请告诉我。

于 2012-10-23T22:00:06.760 回答