我有一张表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
在尝试了所有内容后,我发现删除触发器,然后重新创建它们可以解决问题。当我再次收到错误时,我重新创建了触发器并且它有效。这有什么问题?
答案 0 :(得分:1)
运行show triggers\G
并检查DEFINER
是否设置为user@localhost
。
如果没有,请将DEFINER
的{{1}}修改为TRIGGER
。语法如下:
user@localhost
有关详细讨论,请参阅问题的评论。