0

我一直在专用服务器上使用这个 MySQL 触发器,所以每次更新表时,它都会计算一个新的总和并更新另一个表:

delimiter |
CREATE TRIGGER after_insert_rep_points AFTER INSERT ON users_reputation
FOR EACH ROW
BEGIN
DECLARE new_total INT(10);
SELECT SUM(rep_points) INTO new_total FROM users_reputation
WHERE user_id = NEW.user_id;
UPDATE users SET rep_total = new_total WHERE user_id = NEW.user_id;
END
|
delimiter ;

我现在需要在共享主机环境中使用它,但不幸的是,由于安全预防措施,我不能在共享环境中拥有 SUPER USER 权限,这是触发器所必需的。我不明白这一点。我认为每个人都应该能够使用触发器。

我对存储过程并不了解,事实上我没用,但我想知道这个查询是否可以使用一个来执行,如果可以,任何人都可以给我任何指示吗?

4

1 回答 1

0

编写触发器的人显然 SQL 技能非常有限——整个主体可以表示为一个简单的查询:

UPDATE users SET
rep_total = (SELECT SUM(rep_points) 
    FROM users_reputation 
    WHERE user_id = users.user_id)
WHERE user_id = ?; -- "?" is NEW.user_id inside the trigger. You must provide it

您不需要存储过程 - 只需运行此查询。

于 2012-11-12T11:51:28.247 回答