Таблица становится неизвестной базе данных при добавлении триггера - PullRequest
0 голосов
/ 18 октября 2018

Как только я добавляю триггер после обновления в свою таблицу пользователей, таблица становится неизвестной базе данных.

1109 - Unbekannte Tabelle 'k25831_dotlan.user' в 'списке полей'

Триггер:

CREATE TRIGGER `trg_UpdateNewsletterDate` 
AFTER UPDATE 
ON `user` 
FOR EACH ROW 
IF k25831_dotlan.`user`.newsletter = 1 AND k25831_dotlan.`user`.newsletterdate IS NULL 
THEN 
BEGIN 
UPDATE k25831_dotlan.`user` SET k25831_dotlan.`user`.newsletterdate = NOW() WHERE k25831_dotlan.`user`.id = k25831_dotlan.`user`.id; 
END; 
END IF 

Как я выяснил в моем простом вопросе Оператор обновления MySQL: неизвестная «таблица» в «списке полей» , что безтриггер, нет проблем иметь таблицу с именем пользователя.Как только я сбрасываю триггер, обновления и любые другие запросы работают должным образом.

Информация о php и mySql:

  • PHP-версия: 5.6.38
  • Версия базы данных-клиента: libmysql - mysqlnd 5.0.11
  • Версия сервера: 10.1.36-MariaDB

Процесс установки перешел на xampp.

1 Ответ

0 голосов
/ 18 октября 2018

Begin приходит в начале тела триггера.После этого придут все другие условные операторы / запросы / присвоение переменных и т. Д.

Кстати, что делает ваш триггер.Без доступа к OLD и NEW это не имеет никакого смысла

DELIMITER $$

CREATE TRIGGER `trg_UpdateNewsletterDate` 
AFTER UPDATE ON `k25831_dotlan`.`user` 
FOR EACH ROW  
  BEGIN 

    IF `k25831_dotlan`.`user`.`newsletter` = 1 AND 
       `k25831_dotlan`.`user`.`newsletterdate` IS NULL THEN

      UPDATE `k25831_dotlan`.`user` 
      SET `k25831_dotlan`.`user`.`newsletterdate` = NOW() 
      WHERE `k25831_dotlan`.`user`.`id` = `k25831_dotlan`.`user`.`id`;
    END IF; 
END $$

DELIMITER ;
...