我有一个 PHP 应用程序,可将“通过”、“失败”或“NA”插入字段 TEST1、TEST2、TEST3 ... 到 TEST15。
如果任何 TEST1-TEST15 字段包含“失败”,我有一个名为 OVERALL 的字段需要自动更新为“失败”。
我很确定我需要使用包含更新语句和 CASE 或 IF 的触发器,但我无法确定确切的语法。
任何人都可以请帮助一个 MySQL 菜鸟吗?我正在使用 MySQL 服务器版本:5.1.63-0+squeeze1 (Debian)。
我有一个 PHP 应用程序,可将“通过”、“失败”或“NA”插入字段 TEST1、TEST2、TEST3 ... 到 TEST15。
如果任何 TEST1-TEST15 字段包含“失败”,我有一个名为 OVERALL 的字段需要自动更新为“失败”。
我很确定我需要使用包含更新语句和 CASE 或 IF 的触发器,但我无法确定确切的语法。
任何人都可以请帮助一个 MySQL 菜鸟吗?我正在使用 MySQL 服务器版本:5.1.63-0+squeeze1 (Debian)。
你可能会做类似的事情
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的更多信息
好的,这是另一个 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。我希望这对您有所帮助,如果有任何不清楚的地方请告诉我。