MySQL 需要帮助设置触发器

标签 mysql sql if-statement triggers

我正在尝试设置一个 TRIGGER 以清除 INSERT 之前的空字符串。不是火箭科学,但我找不到语法中的错误!

这是 TRIGGER 本身

USE `ga_abtest_logging`;
DELIMITER $$
CREATE TRIGGER avoid_empty
    BEFORE INSERT ON daily_analytics
        FOR EACH ROW
        BEGIN
            IF profileID = '' 
                THEN SET profileID = NULL
            END IF;
        END$$

这是工作台显示的内容:

DELIMITER

将鼠标悬停在 END IF 上时,它显示 syntax error, unexpected END, expecting ';'

我的数据库设置有问题吗?我已经浏览了 MySQL 文档,我认为触发器看起来不错!有没有人看到任何明显错误的地方?

最佳答案

你应该做一些改变:

  • 在引用列值时使用 NEW. 前缀
  • 在设置值的行末添加一个分号

例如:

DELIMITER $$

CREATE TRIGGER tr_b_ins_daily_analytics BEFORE INSERT ON daily_analytics FOR EACH ROW BEGIN
  IF (NEW.profileID = '')
  THEN
    SET NEW.profileID = NULL;
  END IF;
END $$

DELIMITER ;

关于MySQL 需要帮助设置触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37011642/

相关文章:

php - while 循环按列数复制记录

MYSQL 按大小写和名称排序

mysql - 在同一个查询mysql中更新+排序

sql - 从另一个 sp 获取 sp 值

java - 从 SQL 中的单独表中获取 ID

python - 如何根据输入设置变量值?

mysql - 如何根据某些条件插入或更新?

php - 比较单独表中的 2 列移动和仅移动非重复项

mysql - 如何在关注或取消关注之前检查用户是否正在关注另一个用户(附件)

java - for each 循环中 if 语句的返回值