Mysql触发器例子(备忘)

/**
 * update触发器
 */
DELIMITER $$

DROP TRIGGER `updateEat`$$

CREATE
    TRIGGER `updateEat` AFTER UPDATE ON `TB_BACK_EAT` 
    FOR EACH ROW BEGIN
        DECLARE _gameId INT;
        DECLARE _drawDateId INT;
        DECLARE _number VARCHAR(4);
        DECLARE _status INT;
        DECLARE _big DECIMAL(13,6);
        DECLARE _sml DECIMAL(13,6);
        DECLARE _num_game_draw VARCHAR(100);
        
        SET _gameId = NEW.game_id;
        SET _drawDateId = NEW.drawDate_id;
        SET _number = NEW.number;
        SET _status = NEW.status;
        SET _big = NEW.big;
        SET _sml = NEW.small;
         SET _num_game_draw = CONCAT(_number,'_',_gameId,'_',_drawDateId);
	IF _status=1 THEN  -- 表示取消
	     INSERT INTO TB_BACK_EAT_REPORT(gameId, drawDateId,WEEKDAY,number,fromBig,fromSml,big,small,putBig,putSml,outBig,outSml,num_game_draw)
	     VALUES(_gameId,_drawDateId,1,_number,_big,_sml,0,0,0,0,0,0,_num_game_draw)
	     ON DUPLICATE KEY 
	     UPDATE fromBig= CASE WHEN (fromBig-_big)>=0  THEN fromBig-_big ELSE 0 END,
	            fromSml= CASE WHEN (fromSml-_sml)>=0  THEN fromSml-_sml ELSE 0 END;
	END IF;
    END;
$$

DELIMITER ;

/**
 * insert的触发器
 */
DELIMITER $$

DROP TRIGGER `insertEat`$$

CREATE  TRIGGER `insertEat` AFTER INSERT ON `TB_BACK_EAT` 
    FOR EACH ROW BEGIN
        DECLARE _gameId INT;
        DECLARE _drawDateId INT;
        DECLARE _number VARCHAR(4);
        DECLARE _status INT;
        DECLARE _big DECIMAL(13,6);
        DECLARE _sml DECIMAL(13,6);
        DECLARE _num_game_draw VARCHAR(100);
        
        SET _gameId = NEW.game_id;
        SET _drawDateId = NEW.drawDate_id;
        SET _number = NEW.number;
        SET _status = NEW.status;
        SET _big = NEW.big;
        SET _sml = NEW.small;
        
        SET _num_game_draw = CONCAT(_number,'_',_gameId,'_',_drawDateId);

	IF _status=0 THEN  -- 表示添加
	     INSERT INTO TB_BACK_EAT_REPORT(gameId, drawDateId,WEEKDAY,number,fromBig,fromSml,big,small,putBig,putSml,outBig,outSml,num_game_draw)
	     VALUES(_gameId,_drawDateId,1,_number,_big,_sml,0,0,0,0,0,0,_num_game_draw)
	     ON DUPLICATE KEY 
	     UPDATE fromBig=fromBig+_big,fromSml=fromSml+_sml;
	END IF;
    END;
$$

DELIMITER ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值