触发器:足球队运动问题

时间:2011-08-24 18:32:09

标签: mysql sql database triggers

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

练习如下 表格架构为:

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


练习要求用下一个规则定义触发器 当我在表格Result中插入一个元组时,如果是Goal-Home&gt;目标访问我必须在表格中写两个元组排名:赢家之一,另一个输家。 我用一个例子来澄清它 在D日,A队和B队有G_A对G_B的结果,所以我必须在排名中用这个规则写2个元组
如果G_A> G_B我必须写(D,A,3)和(D,B,0)
如果G_A = G_B,我必须写(D,A,1)和(D,B,1)
如果G_A&lt; G_B我必须写(D,A,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 个答案:

答案 0 :(得分:1)

你应该对像Goal-Home这样的列使用引号'''因为' - '是不允许的符号。 所以尽量使用     NEW.`Goal-Home`