首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

Mysql 如何 在 触发器 中 抛出错误和取消操作 ?

2012-02-12 
Mysql 怎么 在 触发器中 抛出异常和取消操作 ???Mysql怎么在触发器中抛出异常和取消操作CREATETRIGGER`tes

Mysql 怎么 在 触发器 中 抛出异常和取消操作 ???
Mysql   怎么   在   触发器     中   抛出异常和取消操作

CREATE   TRIGGER   `test_before_ins_tr`   BEFORE   INSERT   ON   `test`
    FOR   EACH   ROW
BEGIN
set     @i=   new.i;

IF   @i>   30   THEN
  --   在这里抛出异常和取消   insert   操作  
end   if;

END;


请问如何实现   ????

[解决办法]
确实不行,这是MYSQL的存储过程十分不完善的地方

我也找了很久,后来想了了个巧妙的方法

。。。
IF @i> 30 THEN
-- 在这里抛出异常和取消 insert 操作
SELECT E001 INTO M_ERRMSG;
end if
;。。。

1. MYSQL没有抛出异常的语句,MYSQL已经承认此语句为SIGNAL,目前还没封装.
2. 所以目前能做的是, 要在抛出异常的地方,插入一个错误语句
3. 这个错误语句只能是运行期错误语句,否则编译无法通过
4. 用SELELCT E001 INTO M_ERRMSG, 其中E001可以随便定义为一个不存在字段或函数, 因为这个错误是运行期错误,编译是可以通过的. 后面的INTO M_ERRMSG实际上没有什么用处, 因为SELECT 后面必须加INTO一个变量,否则编译也是不可以通过.

热点排行