mysql触发器的问题 Not allowed to return a result set from a trigger
时间:2011-12-28
来源:互联网
研究了一晚上,转化一个mssql到mysql的触发器,到最后这个问题不知出在何处,请指教。。。
delimiter //
CREATE TRIGGER AccountPayOnlineLog
AFTER INSERT
ON cb_intl_2009.cb_payonlinelog
FOR EACH ROW
BEGIN
DECLARE TMP_oldBalance INT;
DECLARE TMP_newBalance INT;
DECLARE TMP_type VARCHAR(50);
DECLARE TMP_remark VARCHAR(50);
DECLARE TMP_balance_temp INT;
IF NEW.result=N'充值成功' THEN
BEGIN
-- 100元送5元,200元送15元,500元送50元,800送100,1000送150,2000送350。积分双倍。
IF (locate(N'pay19',new.pay_mode)<=0 AND new.amount>=10000) THEN
BEGIN
IF new.Amount=10000 THEN
SET TMP_balance_temp=500;
ELSEIF new.Amount=20000 THEN
SET TMP_balance_temp=1500;
ELSEIF new.Amount=50000 THEN
SET TMP_balance_temp=5000;
ELSEIF new.Amount=80000 THEN
SET TMP_balance_temp=10000;
ELSEIF new.Amount=100000 THEN
SET TMP_balance_temp=15000;
ELSEIF new.Amount=200000 THEN
SET TMP_balance_temp=35000;
ELSE
SET TMP_balance_temp=0;
END IF;
end;
ELSE
SET TMP_balance_temp=0;
END IF;
SELECT TMP_newBalance=balance from cb_USER where telephone=new.telephone;
SET TMP_Type=N'用户充值';
SET TMP_oldBalance=TMP_newBalance-TMP_Amount-TMP_balance_temp ;
SET TMP_Remark=CONCAT(N'【cb_payonlinelog】表ID:',new.id);
INSERT INTO cb_AccountLog(Telphone,OldBalance,NewBalance,Amount,Type,PayMode,Remark,Balance_Temp)
VALUES(new.telephone,TMP_oldBalance,TMP_newBalance,new.amount,TMP_Type,new.pay_mode,TMP_Remark,TMP_balance_temp);
END;
END IF;
end;
//
delimiter //
CREATE TRIGGER AccountPayOnlineLog
AFTER INSERT
ON cb_intl_2009.cb_payonlinelog
FOR EACH ROW
BEGIN
DECLARE TMP_oldBalance INT;
DECLARE TMP_newBalance INT;
DECLARE TMP_type VARCHAR(50);
DECLARE TMP_remark VARCHAR(50);
DECLARE TMP_balance_temp INT;
IF NEW.result=N'充值成功' THEN
BEGIN
-- 100元送5元,200元送15元,500元送50元,800送100,1000送150,2000送350。积分双倍。
IF (locate(N'pay19',new.pay_mode)<=0 AND new.amount>=10000) THEN
BEGIN
IF new.Amount=10000 THEN
SET TMP_balance_temp=500;
ELSEIF new.Amount=20000 THEN
SET TMP_balance_temp=1500;
ELSEIF new.Amount=50000 THEN
SET TMP_balance_temp=5000;
ELSEIF new.Amount=80000 THEN
SET TMP_balance_temp=10000;
ELSEIF new.Amount=100000 THEN
SET TMP_balance_temp=15000;
ELSEIF new.Amount=200000 THEN
SET TMP_balance_temp=35000;
ELSE
SET TMP_balance_temp=0;
END IF;
end;
ELSE
SET TMP_balance_temp=0;
END IF;
SELECT TMP_newBalance=balance from cb_USER where telephone=new.telephone;
SET TMP_Type=N'用户充值';
SET TMP_oldBalance=TMP_newBalance-TMP_Amount-TMP_balance_temp ;
SET TMP_Remark=CONCAT(N'【cb_payonlinelog】表ID:',new.id);
INSERT INTO cb_AccountLog(Telphone,OldBalance,NewBalance,Amount,Type,PayMode,Remark,Balance_Temp)
VALUES(new.telephone,TMP_oldBalance,TMP_newBalance,new.amount,TMP_Type,new.pay_mode,TMP_Remark,TMP_balance_temp);
END;
END IF;
end;
//
作者: skyshit 发布时间: 2011-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28