Это происходит потому, что у вас есть присоединение к таблице ranking
в операторе UPDATE TRIGGER.
Даже если вы не обновляете саму таблицу ranking
, MySQL это не понравится.
Чтобы обойти это, нужно сначала выполнить отдельный запрос SELECT, чтобы вычислить очки игрока, сохранить эти точки в переменной, а затем использовать их в ОБНОВЛЕНИИ таблицы player
, не ссылаясь на * 1008. * стол
Вот идея:
delimiter |
CREATE TRIGGER DES1actualizarConsultaR_update
AFTER UPDATE ON ranking
FOR EACH ROW
BEGIN
DECLARE vPuntosTotales INT;
DECLARE vNumVeces1 INT;
SELECT SUM(ranking_points) AS PuntosTotales INTO vPuntosTotales
FROM ranking
WHERE player_id = NEW.player_id;
UPDATE player SET totalPuntos = vPuntosTotales WHERE player_id = NEW.player_id;
-- NOT SURE IF THIS ONE IS CORRECT
SELECT COUNT(*) AS NumVeces1 INTO vNumVeces1
FROM ranking R
WHERE R.ranking = '1' AND R.player_id = NEW.player_id;
UPDATE player SET vecesNum1 = vNumVeces1 WHERE player_id = NEW.player_id;
END |
вам следует просмотреть мои запросы, потому что я не знаю точно вашу структуру таблиц, и я могу ошибаться в своих SELECT, особенно во втором