DELIMITER //
CREATE TRIGGER goods_sku_update_sumstock AFTER UPDATE ON db_goods_sku
FOR EACH ROW
BEGIN
DECLARE skustock INT(11) DEFAULT 0;
DECLARE totalstock INT(11) DEFAULT 0;
DECLARE stop_flag tinyint(1) DEFAULT 0;
DECLARE skurow CURSOR FOR SELECT gt_stock FROM db_goods_sku where gt_stock=OLD.gt_gid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET stop_flag=1;
OPEN skurow;
REPEAT
FETCH skurow INTO skustock;
IF stop_flag = 0 THEN
SET totalstock = totalstock + skustock;
END IF;
UNTIL stop_flag=1
END REPEAT;
CLOSE skurow;
UPDATE db_goods SET g_stock= totalstock WHERE g_id = OLD.gt_gid;
END;//表:db_goods
g_id 主键
g_name
...
g_stock(int) 商品总库存表:db_goods_skugt_id 主键
gt_gid 所属goods表ID,与db_goods表主键关联
...
gt_stock(int) SKU库存实现功能:当插入、更新、删除db_goods_sku数据后更新db_goods表的g_stock字段。问题描述:每次更新的值都为0,不知道什么原因,请大家帮我看下。
CREATE TRIGGER goods_sku_update_sumstock AFTER UPDATE ON db_goods_sku
FOR EACH ROW
BEGIN
DECLARE skustock INT(11) DEFAULT 0;
DECLARE totalstock INT(11) DEFAULT 0;
DECLARE stop_flag tinyint(1) DEFAULT 0;
DECLARE skurow CURSOR FOR SELECT gt_stock FROM db_goods_sku where gt_stock=OLD.gt_gid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET stop_flag=1;
OPEN skurow;
REPEAT
FETCH skurow INTO skustock;
IF stop_flag = 0 THEN
SET totalstock = totalstock + skustock;
END IF;
UNTIL stop_flag=1
END REPEAT;
CLOSE skurow;
UPDATE db_goods SET g_stock= totalstock WHERE g_id = OLD.gt_gid;
END;//表:db_goods
g_id 主键
g_name
...
g_stock(int) 商品总库存表:db_goods_skugt_id 主键
gt_gid 所属goods表ID,与db_goods表主键关联
...
gt_stock(int) SKU库存实现功能:当插入、更新、删除db_goods_sku数据后更新db_goods表的g_stock字段。问题描述:每次更新的值都为0,不知道什么原因,请大家帮我看下。
解决方案 »
- 为什么创建mysql数据库表格不成功呢
- mysql中IN 与 INNER JOIN 效率对比
- 把ms sql 2000的存贮过程 转为 my sql ,分值50?
- MYSQL解决auto_increment的问题
- [MYSQL]还是乱码问题。jsp+mysql4.1.X+tomcat5.028 基本编码都保持一直了 还是不成功。详细。。。。
- 请教一个和postgresql相关的问题
- my sql功能怎么这么烂啊...这样都查不出来..
- vc中使用mysql出现的问题(急等求助!!!)
- 我用redhat8自带的postgresql,现在要写一个测试程序,怎么写?
- windows xp 启动mysql出错,急 急 急
- Mysql 读内存冲突
- 2表对比得出相同和不同个结果
SELECT gt_stock FROM db_goods_sku where gt_stock=OLD.gt_gid;
中是否有记录
改为:gt_gid=....
create table lsb as SELECT gt_stock FROM db_goods_sku where gt_stock=OLD.gt_gid;
检查lsb中的内容