mysql - 如果列已使用特定字符串更新,如何添加触发器

标签 mysql triggers

如果名称已使用“NEW_”字符串更新,我想添加一个触发器。下面是我当前的触发器,但它在不检查更新值包含“NEW_”的情况下工作。请指教

  • 如果用户将姓名从“Ann”更新为“NEW_Ann”,触发器应该会起作用。
  • 如果用户将姓名从“Ann”更新为“Ann111”,触发器将不起作用

代码:

  $this->execute("ALTER TABLE `users`
  ADD COLUMN `date_` TIMESTAMP NULL DEFAULT NULL");

    $this->execute("CREATE TRIGGER `update_user_deleted_date` BEFORE UPDATE ON `users` FOR EACH ROW BEGIN

                        IF (NEW.name!= OLD.name) THEN

                        SET NEW.date_deleted = NOW();

                        END IF;

                    END ;");

最佳答案

使用这个:

CREATE TRIGGER update_user_deleted_date BEFORE UPDATE ON users
FOR EACH ROW BEGIN
IF (LOCATE('NEW_', NEW.name) != 0) THEN
    SET NEW.date_deleted = NOW();
END IF;
END;

LOCATE('NEW_', NEW.name) != 0 表示找到字符串“NEW_”的位置

关于mysql - 如果列已使用特定字符串更新,如何添加触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42608900/

相关文章:

Oracle:搜索所有存储的过程/触发器/其他数据库代码?

mysql - SQL 首先按字母顺序排序,然后通过自定义 bool 列排序

sql - 如何实现Foursquare的 "Mayor"功能——找到最近N天得分最高的用户?

php - 从 mysql 数据库中提取数据,其中用户有多行,但查找具有两个最大值的行

jquery 1.9.1 .trigger() 不将参数传递给点击处理程序

javascript - each() 迭代与触发器结合使用

google-apps-script - 过期的基于时间的触发器是自动删除的,还是应该手动删除?

php - 从两个表中获取电影列表和评级 MySQL LEFT JOIN

mysql - 具有反向查找的多对多关系

jQuery 触发器延迟返回