【问题标题】:Mysql-Trigger syntax errorMysql-触发器语法错误
【发布时间】:2015-08-09 08:14:02
【问题描述】:

我正在尝试在表上创建触发器,但我不断收到错误消息。知道以下陈述有什么问题吗?

CREATE TRIGGER `some_name` BEFORE UPDATE ON `some_table` 
    FOR EACH ROW BEGIN 
        IF NEW.isDeleted = 1 THEN
            SET NEW.isSearchable = 0; 
        ELSE THEN 
            SET NEW.isSearchable = 1; 
        END IF;
    END;

Mysql 输出:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '' 附近使用正确的语法

【问题讨论】:

标签: mysql


【解决方案1】:

您缺少分隔符,在else 之后也不需要then

delimiter //
create trigger `some_name` BEFORE UPDATE ON `some_table` 
for each row
begin
 if new.isDeleted = 1 then
  SET NEW.isSearchable = 0; 
 else
  SET NEW.isSearchable = 1; 
 end if;
end;//

delimiter ;

【讨论】:

  • 您好,谢谢。我尝试了分隔符,但我得到了一个错误!但是尽管MySQL返回错误,但不知何故创建了触发器!奇怪的!这就是为什么我认为它不起作用 ------- #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“DELIMITER”附近使用正确的语法
  • 您是在 mysql cli 或其他一些第 3 部分应用程序(如 PHP myadmin)中运行它,如果它在 php myadmin 上检查,您可以设置分隔符并从上面的代码中删除开头和结尾的分隔符.
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多