У меня есть таблица discussions
, в которой хранятся данные постов на моем сайте.
Теперь у меня есть 2 триггера, один из которых вставляет столбец path
при добавлении новой строки, а другой обновляет path
при обновлении строки следующим образом:
CREATE TRIGGER discussions_trigger BEFORE INSERT ON discussions FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='discussions');
IF(NEW.visibility<1)
THEN
SET NEW.path = CONCAT('discussions.php?id=',next_id);
ELSEIF(NEW.visibility>=1)
THEN
SET NEW.path = CONCAT('private.php?id=',next_id);
END IF;
CREATE TRIGGER discussions_update_trigger BEFORE UPDATE ON discussions FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = OLD.id;
IF(NEW.visibility<1)
THEN
SET NEW.path = CONCAT('discussions.php?id=',next_id);
ELSEIF(NEW.visibility>=1)
THEN
SET NEW.path = CONCAT('private.php?id=',next_id);
END IF;
Хотя это работает так, как должно, время от времени, когда я пытаюсь вставить или обновить таблицу discussions
, я получаю следующую ошибку:
Пользователь abhishek@'An unknown IP
' не определен.
Однако пользователь abhishek
разрешен только с localhost
.
Перепробовав все, я обнаружил, что удаление триггеров, а затем их повторное создание решает проблему. Когда я снова получил ошибку, я заново создал триггеры, и это сработало. В чем проблема?