Мне нужно сделать что-то похожее на репутацию / награды при переполнении стека.
Допустим, я хочу выдать награду, когда число пользователей превышает 500. (например, награда № 7)
Но я хочу, чтобы награду давали только один раз, поэтому, если повторение уменьшится, а затем снова увеличится, они не получат две награды.
INSERT INTO awards (number, username, date) SELECT 7, username, NOW() FROM users WHERE rep>500;
И тогда есть первичный ключ имени пользователя, номер
Trigger:
CREATE TRIGGER `rewards` BEFORE INSERT ON `awards`
FOR EACH ROW BEGIN
UPDATE users SET points=points+1 WHERE username=NEW.username AND NEW.number=7;
END
но я получаю эту ошибку:
1442 - Невозможно обновить таблицу 'users' в сохраненной функции / триггере, поскольку она уже используется оператором, который вызвал эту сохраненную функцию / триггер.