【问题标题】:Removing "The " with an IF statement in MYSQL Before Insert Trigger在插入触发器之前在 MYSQL 中使用 IF 语句删除“The”
【发布时间】:2021-01-02 01:10:05
【问题描述】:

你好,堆栈溢出的世界! 我对触发器是全新的,但在我的新项目中使用它们很有趣。 我已经完成了一些工作,但正在努力通过从名称的开头删除“The”来设置排序字段。

作为新手,我正在使用 PHP MyAdmin 来构建我的触发器。所以我在插入之前将它设置为我的“aartist”表。这两个字段是艺术家姓名和艺术家排序。这是我尝试过的完整代码。

BEGIN
 IF (left(new.artist_name,4) != "The ")
   THEN
    set new.artist_sort = new.artist_name
   ELSE
    set new.artist_sort = right(new.artist_name,len(new.artist_name)-4)
   END IF;
END

我也尝试将其剥离以获得更简单的东西,但仍然没有运气。 IF 语句在 TRIGGER 中似乎不起作用。

BEGIN
 IF (new.artist_name != new.artist_sort) THEN
    set new.artist_sort = new.artist_name
   END IF;
   
END

PHPMyAdmin 给出的错误是:

 One or more errors have occurred while processing your request:
The following query has failed: "CREATE DEFINER=`####`@`localhost` TRIGGER `AddArtist` BEFORE INSERT ON `aartist` FOR EACH ROW BEGIN IF (new.artist_name != new.artist_sort) THEN set new.artist_sort = new.artist_name END IF; END"
MySQL said: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF; END' at line 4

一如既往地感谢您提供任何帮助以找出我可能做错了什么。

【问题讨论】:

    标签: mysql if-statement triggers


    【解决方案1】:

    进行了更多挖掘,发现了一些我修改过的 SQL 代码,所以我没有使用 PHPMyAdmin 触发器表单,而是调整了 SQL 代码,它就可以工作了!不是 100% 确定它为什么会这样,但主要的变化是代码中的分隔符部分和额外的 ;s,所以我猜这与它有关。

    MySQL trigger if condition exists

    DROP TRIGGER IF EXISTS AddArtist;
    
    DELIMITER $$
    
        CREATE TRIGGER AddArtist BEFORE UPDATE ON `aartist`
        FOR EACH ROW BEGIN
          IF (left(NEW.artist_name,4) = 'The ') THEN
                SET NEW.artist_sort = right(NEW.artist_name, CHAR_LENGTH(NEW.artist_name) - 4);
          ELSE
                SET NEW.artist_sort = NEW.artist_name;
          END IF;
        END$$
    
    DELIMITER ;
    

    【讨论】:

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