mysql 触发器 if 语句 update
作者&投稿:仲长耍 (若有异议请与网页底部的电邮联系)
您的触发器是哪个表的触发器。因为Mysql就在里面。触发器无法查询/修改当前触发的表。
mysql 触发器 if语句用法
@sqlz ='select asd from flkg';
EXECUTE(@sqlz);
----------
首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.
这里我是希望他能中断更新!
EXECUTE(@sqlz);
----------
首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.
这里我是希望他能中断更新!
---------------------
你的意思是不是要中断后面的
"
SET amount =@amountmm
WHERE CODE=new.code AND whcode = new.whcode ;
"
这部分?
如果是的话,那这样改下:
DELIMITER $$
USE `eerp`$$
DROP TRIGGER /*!50032 IF EXISTS */ `material_update`$$
CREATE TRIGGER `material_update` AFTER UPDATE ON `sf_material`
FOR EACH ROW BEGIN
IF new.auditing = 'Y' THEN
SET @amountmm = (SELECT amount-new.amount FROM warehouse WHERE CODE=new.code AND whcode = new.whcode);
IF @amountmm >=0 THEN
UPDATE warehouse
SET amount =@amountmm
WHERE CODE=new.code AND whcode = new.whcode ;
END IF ;
END IF;
END;
$$
DELIMITER ;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
"我是要中断更新。。不是后面。。。严格说就是这个表sf_material更新和后面的那个表warehouse更新也一起中断!"
---------------------------------------------------------------
因为mysql下触发器内不支持rollback,所以,变换一个方式来处理,如下:
那触发器部分这么写(注意:一定要使表TB_error_rollback在你的库中不允许存在):
CREATE TRIGGER `material_update`
BEFORE UPDATE
ON `sf_material`
FOR EACH ROW
BEGIN
IF new.auditing = 'Y' THEN
SET @amountmm = (SELECT amount- new.amount FROM warehouse WHERE CODE=new.code AND whcode = new.whcode);
IF @amountmm <0 THEN
update TB_error_rollback set name=1;
END IF;
UPDATE warehouse
SET amount =@amountmm
WHERE CODE=new.code AND whcode = new.whcode;
END IF;
END;
有时候在修改某一个字段的值得时候我们需要根据当前字段的不同状态进行不同处理,
比如对于用户表,我们需要记录下来用户被访问的次数,但访问次数的初始值为 null。
少了SET吧
延岭莫炎: mysql 触发器 if语句用法 @sqlz ='select asd from flkg'; EXECUTE(@sqlz);---------- 首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.这里我是希望他能中断更新!
措美县15183718776: mysql 触发器 if 语句 update - ?
延岭莫炎: @sqlz ='select asd from flkg'; EXECUTE(@sqlz);---------- 首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.这里我是希望他能中断更新!--------------------- 你的意思是不是要中断后面的" SET amount =@amountmm ...
措美县15183718776: mysql触发器里怎么写运算和条件语句 - ?
延岭莫炎: IF条件语句:begin update huxing if(new.户型='平层') then declare a int(5); set a =select 租平层数量 from huxing; set 租平层数量=a+1; end if; end
措美县15183718776: mysql if 控制语句怎么写??
延岭莫炎: MYSQL没有IF的语句,MYSQL使用的是MYSQL特色的SQL语句,它的WHERE和IF差不多,同样的条件判断 SELECT 字段 FROM 表名 where 条件
措美县15183718776: Mysql 触发器 if 和 end 提示语法错误 - ?
延岭莫炎: END $$ 错误处的END替换成这样看看
措美县15183718776: sqlserver触发器添加条件if语句后不起作用,求解? - ?
延岭莫炎: select @t1=Not_Withdraw_Total from tbUserInfo 看看你这个@t1的具体值,应该是最后一条记录的值 这个值是否大于等于插入记录的Price*Rest_Num
措美县15183718776: 求一条mysql5.0的触发器语句 - ?
延岭莫炎: 给你个例子 create trigger myw on Product after insert as //这里就是用来执行插入后触发的语句 go
措美县15183718776: 怎么判断mysql触发器是否存在 - ?
延岭莫炎: 这个你只能写sql 语句去数据库里面去查询触发器是否存在了 不是有个 if exists(SELECT * FROM information_schema.`TRIGGER `;) drop TRIGGER room_kq_detail_times
措美县15183718776: mysql触发器语句 - ?
延岭莫炎: mysql的trigger还是有很多限制的地方: 1 一次只能定义一个触发动作.Create trigger or_sal before insert on teacher for each row --每次只定义一个吧 2 设置值必须使用set语句set New.Sal = 4000; --要加set 3 分隔符的问题看是使用什么客户端工具,根据报错结果修正吧.有的工具对分隔符支持不好,可以在mysql命令行执行试下.
措美县15183718776: MySQL的if语句出现语法错误 - ?
延岭莫炎: 如果是存储过程:insert into 这句后面应该添加 ; 如果是SQL语句,IF的用法完全不是这样的:例子:select if(2>0,"正确","错误") from tab1; 楼主的目的是啥不清楚,可以参考如下的例子:insert into tab1 values( if(2>0,'aaaa','bbbb'));