Ошибка запуска из-за INSERT INTO .. ​​SELECT, ошибка # 1442 - PullRequest
1 голос
/ 07 июля 2011

Мне нужно сделать что-то похожее на репутацию / награды при переполнении стека.

Допустим, я хочу выдать награду, когда число пользователей превышает 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' в сохраненной функции / триггере, поскольку она уже используется оператором, который вызвал эту сохраненную функцию / триггер.

1 Ответ

4 голосов
/ 07 июля 2011

Просто создайте триггер на столе наград

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...