Table 添加触发器时数据库无法识别
Table gets unknown to database when adding trigger
一旦我向我的用户 table 添加更新后触发器,table 就变得不为数据库所知。
1109 - Unbekannte Tabelle 'k25831_dotlan.user' in 'field list'
触发器:
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
正如我在类似问题 中发现的那样,如果没有触发器,调用 table 用户是没有问题的。只要我放下触发器,更新和任何其他查询就会按预期工作。
关于php和mySql的信息:
- PHP-版本:5.6.38
- 数据库客户端版本:libmysql - mysqlnd 5.0.11
- 服务器版本:10.1.36-MariaDB
安装过程已由 xampp 接管。
Begin
出现在触发器主体的开头。之后,所有其他条件 statements/queries/variable 赋值等都会出现。
对了,你的Trigger是做什么的。不访问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 ;
一旦我向我的用户 table 添加更新后触发器,table 就变得不为数据库所知。
1109 - Unbekannte Tabelle 'k25831_dotlan.user' in 'field list'
触发器:
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
正如我在类似问题
关于php和mySql的信息:
- PHP-版本:5.6.38
- 数据库客户端版本:libmysql - mysqlnd 5.0.11
- 服务器版本:10.1.36-MariaDB
安装过程已由 xampp 接管。
Begin
出现在触发器主体的开头。之后,所有其他条件 statements/queries/variable 赋值等都会出现。
对了,你的Trigger是做什么的。不访问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 ;