2011-08-24 107 views
0

我在做触发器时遇到了一些问题
我正在为大学做一些练习,我更喜欢在真正的mysql数据库中测试自己。

这次演习是以下
表架构为:
触发器:足球队练习题

Result (<b>Day, Home-Team, Visiting-Team</b>, Goal-Home, Goal-Visiting) 
Ranking (<b>Day, Team</b>, Points) 


的行使要求来定义触发下一个规则
当我在表中插入结果一个元组,如果目标 - 主页>目标访问我必须在表格中写出两个元组排名:赢家团队之一,失败者之一。
我用一个例子来说明
A组和B组在D天有一个G_A和G_B的结果,所以我必须用这个规则编写2个元组排序
如果G_A> G_B我必须写(D (D,A,1)和(D,B,1)
如果G_A < G_B我必须写(D,A,3)和,0)和(d,B,3)


我已经测试了我的MySQL数据库的代码,但它不工作(我做了一些尝试)

DELIMITER // 
CREATE TRIGGER insertRankValues 
AFTER INSERT ON Result 
FOR EACH ROW 
BEGIN 
IF NEW.Goal-Home > NEW.Goal-Visiting 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Home-Team, 3); 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Visiting-Team, 0); 
END IF; 
IF NEW.Goal-Home < NEW.Goal-Visiting 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Home-Team, 0); 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Visiting-Team, 3); 
END IF; 
IF NEW.Goal-Home = NEW.Goal-Visiting 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Home-Team, 1); 
INSERT INTO Ranking VALUES (NEW.Day, NEW.Visiting-Team, 1); 
END IF; 
END; // 


您有什么建议?为什么它不起作用?
预先感谢您的耐心!

回答

1

对于像Goal-Home这样的列,您应该使用引号'`',因为' - '不是符号。 因此,尽量使用 NEW.`Goal-Home`

+0

或更好,但养成不使用使用字符如 - 或空格或db关键字的字段名称的习惯。 – HLGEM

+0

同意但有时表格方案是遗留的。 :) –

+0

这是真的,他应该知道这一点。但最好从良好的习惯开始。 – HLGEM