添加触发器时数据库不知道表

vsnjm48y  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(349)

一旦我将after update触发器添加到我的用户表中,数据库就不知道该表了。

1109-字段列表中的unbekannete tabelle'k25831\u 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 update语句中发现的那样:“field list”中未知的“table”,如果没有触发器,那么拥有一个名为user的表是没有问题的。一旦我放下触发器,更新和任何其他查询都会按预期工作。
有关php和mysql的信息:
php版本:5.6.38
数据库客户端版本:libmysql-mysqlnd 5.0.11
服务器版本:10.1.36-mariadb
安装过程已由xampp接管。

wyyhbhjk

wyyhbhjk1#

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 ;

相关问题