我正在尝试创建这个MySQL触发器:
DELIMITER //
CREATE TRIGGER checkcollision2 AFTER UPDATE ON projectiles p1
FOR EACH ROW
BEGIN
IF (SELECT count(*) FROM players p WHERE p.wolf=1 AND NEW.x>=p.x AND NEW.x<=p.x+25 AND NEW.y>=p.y AND NEW.y<=p.y+25) > 0 THEN
DELETE FROM projectiles p2 WHERE p1.id=p2.id;
END IF;
END;//
DELIMITER ;
但是这样不起作用,因为它会出现语法错误。我不确定是否因为我在使用表的别名。我这样做是因为,如果
if
语句为真,则希望删除触发器开始处理的当前更新行。我认为可以通过从相同的表中删除,其中id相同来实现,但如果我不使用别名,那么将删除此表中的所有行。有人看到这里有什么问题吗?