【问题标题】:Trigger creation is not working触发器创建不起作用
【发布时间】:2013-04-02 09:52:00
【问题描述】:

我在 phpmyadmin 上创建触发器时遇到问题。 我有一个像下面这样的简单代码,当我提交代码时,在变量 x 声明的行中返回了一个 sintax 错误。我知道 SELECT 查询有效,因为我已经对其进行了测试,并返回了一个字符串。谁能帮我?提前致谢。

DELIMITER $$

CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
FOR EACH ROW 
BEGIN
DECLARE x VARCHAR(10);
SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
INSERT INTO messages (Message) VALUES (x);
$$
END

DELIMITER ;

【问题讨论】:

    标签: mysql triggers phpmyadmin


    【解决方案1】:

    这是一个语法错误,

    END 应该出现在您的分隔符 $$ 之前。

    试试这样的:

    DELIMITER $$
    
    CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
    FOR EACH ROW 
    BEGIN
    DECLARE x VARCHAR(10);
    SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
    INSERT INTO messages (Message) VALUES (x);
    END
    $$
    
    DELIMITER ;
    

    【讨论】:

      【解决方案2】:

      我认为BEGINDECLARE 之后

      DELIMITER $$
      
      CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
      FOR EACH ROW 
      
      DECLARE 
        x VARCHAR(10);
      BEGIN
        SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
        INSERT INTO messages (Message) VALUES (x);
        $$
      END
      
      DELIMITER ;
      

      【讨论】:

        【解决方案3】:

        user variables怎么样?

        DELIMITER $$
        
        CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
        FOR EACH ROW 
        BEGIN
           SET @x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1 LIMIT 1);
           INSERT INTO messages (Message) VALUES (@x);
        $$
        END
        
        DELIMITER ;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-02
          • 1970-01-01
          • 2016-01-02
          • 2018-10-17
          • 2017-04-22
          相关资源
          最近更新 更多