【问题标题】:Trigger won't run in MySql WorkBench触发器不会在 MySql WorkBench 中运行
【发布时间】:2018-04-17 17:31:56
【问题描述】:

我已经更新了我的问题,但问题仍然存在。现在它在 VALUES 附近显示了我的红十字。我不知道语法有什么问题

DELIMITER $$

CREATE TRIGGER PendingPublish 
    AFTER INSERT ON TopicPending
    FOR EACH ROW
BEGIN
INSERT INTO Topics (Title,Description,Question1,Qustion2,Question3,Question4,UserID)
VALUES (NEW.Title,NEW.Descritpion,NEW.Question1,NEW.Question2,NEW.Question3,NEW.Question4,NEW.UserID) 
  FROM TopicPending  
  WHERE NEW.TopicApproved = 'YES' 
END;$$

DELIMITER ;

【问题讨论】:

  • 不是 100% 肯定,但相当肯定 INSERTED 是特定于 MS Sql Server 的,并且不受 MySQL 支持。
  • 在 MySQL 中,您使用 NEW.columnName 来访问正在插入的值。
  • @Barmar 新。在插入的查询列之前还是选择查询列?
  • @samscoot 没有SELECT。只需使用VALUES (NEW.Title, NEW.Description, ...)

标签: mysql sql database-trigger


【解决方案1】:

您的触发器具有表 TopicPending 中的新值,因此要访问列 TopicApproved,您只需为其添加前缀 New。无需选择它。见下文。

IF NEW.TopicApproved = 'YES' THEN
  INSERT INTO Topics (Title,Description,Question1,Qustion2,Question3,Question4,UserID)
  VALUES (NEW.Title,NEW.Description,NEW.Question1,NEW.Question2,NEW.Question3,NEW.Question4,NEW.UserID);
END IF;

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多