关于mysql中创建触发器

今天也是第一次在用到mysql的触发器来自己写了一些触发器的如何建立,及使用。

第一创发触发器

create trigger  '触发器的名字'   after/befor   insert /delete/update  on  '表名'

for ecah row begin

/**

中间就是一些自己根据业务逻辑去写代码

*/


end;


 其中after ,befor  很容易理解就是当这个表发生变化的时候,是在这个表更新之前还是之后让这个触发器去触发 执行相应的存储过程,具体用哪个关键字 ,那要看自己的业务是什么样的。insert  /delete /update 是这个表上的相应操作时候 才会有触发器的操作。



DELIMITER $$



USE `cric_crm`$$


DROP TRIGGER /*!50032 IF EXISTS */ `t_trigger_after_delete_on_execuser`$$


CREATE
    /*!50017 DEFINER = 'leju'@'%' */
    TRIGGER `t_trigger_after_delete_on_execuser` AFTER DELETE ON `t_ad_contract_execuser`  /* 在t_ad_contract_execuser表上创建 删除的触发器,并且是在删除以后触发器才开始执行以下的处理*/
    FOR EACH ROW BEGIN   /*对每行都有影响*/
DECLARE in_ad_type INT DEFAULT  0 ; /*定义变量,这里和其他的高级语言不太一样,其实很想sql里面的语句的*/
DECLARE in_count_type VARCHAR(3) DEFAULT '';
DECLARE in_choose_time VARCHAR(32) DEFAULT '';
DECLARE in_match_process INT DEFAULT 0;
DECLARE is_change INT DEFAULT 0 ;
DECLARE in_priviledge INT DEFAULT 0;
SET in_ad_type = 2;
SET is_change = (SELECT COUNT(*) FROM t_ad_contract_detail WHERE id=old.id);
IF is_change >0 THEN
                SELECT priviledge , match_process ,issue_start_time INTO in_priviledge,in_match_process,in_choose_time FROM t_ad_contract_detail WHERE id=old.id ;

/*这个sql语句中 涉及到给上述定义的变量赋值(INTO) 关键字后面的就是对变量赋值*/

                IF in_priviledge >= 90000 THEN  /*if 判断语句 如果有多个条件的话 用 and /or  因为这会sql里的操作*/

SET in_ad_type = 1 ;
ELSE 
SET in_ad_type = 2;
END IF ;
IF FLOOR(in_match_process) <1 THEN
SET in_count_type = 'un';
ELSE 
SET in_count_type='all';
END IF;

CALL t_procedure_on_ce_delete(old.execuserid ,in_ad_type  ,in_count_type,DATE_FORMAT(in_choose_time,'%Y-%m-%e') );

            /*调用相应的存储过程,也就是说当这个表中的数据有删除的时候 你想做什么操作,自己定义函数/方法 来进行处理*/

END IF;
END;
$$


DELIMITER ;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值