2 yuan1990731 yuan1990731 于 2016.03.25 09:31 提问

mysql触发器语法错误问题

CREATE TRIGGER tradecost
AFTER UPDATE ON fentrust
FOR EACH ROW
BEGIN
DECLARE old_account DECIMAL(16,6)
DECLARE old_fid INT(10)
DECLARE trade_account DECIMAL(16,6)

SET old_fid = SELECT old_fid FROM fentrust WHERE old.fEntrustType = 1 AND old.fstatus = 1 AND new.fstatus IN(2,3)
SET trade_account = (SELECT fsuccessamount FROM fentrust WHERE old.fEntrustType = 1 AND old.fstatus = 1 AND new.fstatus IN(2,3))
SET old_account = (SELECT ftotalrmb FROM fwallet WHERE fid = old_fid)

UPDATE fwallet SET ftotalRMB = (old_account-trade_account*0.005)

END

上面的语法有问题 总报错 求助应该怎么写 谢谢

5个回答

yuan1990731
yuan1990731   2016.03.25 09:39

CREATE TRIGGER tradecost
BEFORE UPDATE ON fentrust
FOR EACH ROW
BEGIN
UPDATE fwallet t SET t.ftotalRMB = 1
END

这样也是报错,什么原因呢

yue1123
yue1123   2016.03.25 09:57

报什么错最好说出来。

yuan1990731
yuan1990731   2016.03.25 10:03

DELIMITER $$

CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER v_coin.tradecost AFTER UPDATE
ON v_coin.fentrust
FOR EACH ROW BEGIN

IF old.fEntrustType = 1 AND old.fstatus = 1 AND new.fstatus IN(2,3);

UPDATE fwallet SET ftotalRMB =  ((SELECT ftotalrmb FROM fwallet WHERE fid = old.fus_fid)-old.fsuccessamount*0.005);

END$$

DELIMITER ;
修改之后还是有问题 但是去掉IF语句就能执行了 求指点

yuan1990731
yuan1990731   2016.03.25 10:11

少个 END IF; 解决了

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:23

mysql语法错误
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
mysql触发器基本语法实际应用,图文+代码教程详细说明
mysql触发器基本语法实际应用,图文+代码教程详细说明
MySQL触发器-条件触发器语法
文章为作者原创,未经许可,禁止转载。    -Sun Yat-sen University 冯兴伟 实验4 触发器 (1)实验目的 掌握数据库触发器的设计和使用方法 (2)实验内容和要求 定义BEFORE触发器和AFTER触发器。能够理解不同类型触发器的作用和执行原理,验证触发器的有效性。 (3)实验重点和难点 实验重点:触发器的定义。 实验难点:利
mysql触发器大全
在研究MySQL触发器经历几番波折之后,我终于决定写下这篇MySQL触发器的使用介绍,以便后来人! 一.mysql触发器的作用及语法 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。 数据库触发器有以下的作用:   1.安全性。可以基于数据库的值使用户具有操作数据库的某种权利。   # 可以基于时间限制用户
mysql触发器用法详解
MySQL触发器语法详解:          触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由程序调用,而是由某个事件来触发的。在有数据修改时自动强制执行其业务规则,经常用于加强数据的完整性约束和业务规则等。触发器可以查询其他表,而且包含复制的s
MySQL触发器 trigger学习
触发器:一类特殊的事物,可监视某种数据操作,并触发相关操作(insert/update/delete);表中的某些数据改变,希望同时可以引起其它相关数据改变的需求。 作用:变化自动完成某些语句查询,添加程序的灵活性。 创建触发器语法: #delimiter $$  //默认情况下,delimiter是分号“;”,sql语句带有;号结尾会报错,没到end就算到结束了,使用delimiter
MySql-创建触发器
在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 其中: trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER; trig
mysql-触发器,存储过程和函数,定时器使用等内容分享
写博客,重复造轮子还是少做,这里索性就直接分享学习的内容。1.触发器最通俗易懂的入门博客(里面通过实例来引出用法) http://www.cnblogs.com/zzwlovegfj/archive/2012/07/04/2576989.html 全面的介绍(这里是对上面内容的补全,作为完整的知识点要看): http://www.baike369.com/content/?id=5495 h
mysql触发器简单demo,深入理解
之前的文章已经有详细讲解过触发器的语法,这篇文章主要是以实践为主,本人浏览了好多关于触发器的博客,好文章确实不少,在这里挑这篇转载,是因为觉得对于任何入门的知识,起步把握要领即可,后续再慢慢深入,不能刚开始一篇长篇大论,各种深入问题都涉及,那样会给自己在学习之前造成视野恐惧和心理恐惧. 希望这篇文章能让你快速清晰的理解触发器这个概念. 文章转载自: http://www.cnblogs.co
mysql中定义变量
1.采用declare定义变量的注意事项 http://www.jb51.net/article/23574.htm 2.采用@定义临时变量 http://book.2cto.com/201207/661.html
MYSQL5.6创建存储过程和触发器
MYSQL支持存储过程procedure,触发器triger,event(定时任务)与oracle的存储过程,触发器,job对应。 创建示例: 1.存储过程 DROP PROCEDURE IF EXISTS `PROC_TEST`; CREATE DEFINER = `tfm`@`%` PROCEDURE `PROC_TEST`() COMMENT '定时统计结果\r\n'