添加触发器

时间:2018-10-18 17:00:38

标签: mysql xampp database-trigger

一旦我向用户表添加了更新后触发器,该表就对数据库变得未知了。

  

1109-在“字段列表”中取消了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 Update Statement: Unknown 'table' in 'field list'中发现,没有触发器,拥有名为user的表就没有问题。一旦放下触发器,更新和所有其他查询就会按预期工作。

有关php和mySql的信息:

  • PHP版本:5.6.38
  • 数据库客户端版本:libmysql-mysqlnd 5.0.11
  • 服务器版本:10.1.36-MariaDB

安装过程已由xampp接管。

1 个答案:

答案 0 :(得分:1)

Begin位于触发器主体的开头。然后,所有其他条件语句/查询/变量赋值等都会出现。

顺便说一下,您的触发器会做什么。如果不访问OLDNEW,则没有任何意义

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 ;
相关问题