首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL5.5 If语句

MySQL5.5 If语句
EN

Stack Overflow用户
提问于 2015-05-18 00:51:24
回答 1查看 41关注 0票数 1

在Windows6.2上使用MySQL55,

代码语言:javascript
复制
DROP TRIGGER IF EXISTS `maxBBLimit`;
CREATE TRIGGER `maxBBLimit`
AFTER UPDATE ON locationobject
FOR EACH ROW
IF locationobject.boxLowY > 1000 THEN CALL RaiseException();
END IF;

假设locationobject有一个名为boxLowY的无符号int变量,它只允许0到1000之间的值,如果它高于此范围,则调用RaiseException()

由于以下错误,我的工作区拒绝编译:

代码语言:javascript
复制
17:43:40    CREATE TRIGGER `maxBBLimit` AFTER UPDATE ON locationobject FOR EACH ROW IF locationobject.boxLowY > 1000 THEN CALL RaiseException() Error Code: 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 '' at line 4    0.000 sec

^这个在)下有一个红色的切换,在RaiseException(之后

代码语言:javascript
复制
17:43:40    ; END IF    Error Code: 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' at line 1    0.000 sec

^这一个在END下面的END IF语句中有一个红色的切换;

有人对如何编译这段代码有任何建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-18 01:28:26

触发器定义应该被delimiter语句包围。

此外,还可以使用new引用触发器的表。你想要一个before update触发器。如果在update之后失败,坏值仍将进入数据库。而且,通常使用signal返回错误。所以,如果我没有错过什么:

代码语言:javascript
复制
DELIMITER $$
DROP TRIGGER IF EXISTS `maxBBLimit` $$
CREATE TRIGGER `maxBBLimit`
AFTER UPDATE ON locationobject
FOR EACH ROW
    IF new.boxLowY > 1000 THEN 
        SIGNAL SQLSTATE '4500' SET MESSAGE_TEXT = 'boxLowY out of range';
    END IF$$
DELIMITER ;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30293671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档