mysql trigger

1、创建触发器

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

■ trigger_name:标识触发器名称

■ trigger_time:标识触发时机,用before和after替换;

■ trigger_event:标识触发事件,用insert,update和delete替换;

■ tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;

■ trigger_stmt:触发器程序体。通过使用BEGIN ... END结构,能够定义执行多条语句的触发程序。

2、查看触发器

SHOW TRIGGERS

SHOW TRIGGERS from dbname like "aaa%";

information_schema.TRIGGERS

3、删除触发器
DROP TRIGGER [schema_name.]trigger_name


4、其他

OLD关键字和NEW关键字。OLD和NEW可以引用触发器所在表的某一列

对于具有相同触发程序动作时间和事件的给定表,不能有两个触发程序。

通过使用BEGIN ... END结构,能够定义执行多条语句的触发程序。

定义执行多条语句的触发程序时,如果使用mysql程序来输入触发程序,需要重新定义语句分隔符,以便能够在触发程序定义中使用字符“;”。

5、例子

drop trigger if exists crm_callback_trigger_after_insert;
delimiter //
create trigger crm_callback_trigger_after_insert after insert on crm_callback
    for each row
    begin
      select max(service_date) into @max_service_date from crm_callback where tid = new.tid and account_id = new.account_id and contact_id = new.contact_id;
        update task_contact set max_service_date = @max_service_date where tid = new.tid and aid = new.account_id and cid = new.contact_id;
    end;//
delimiter ;


drop trigger if exists crm_callback_trigger_after_update;
delimiter //
create trigger crm_callback_trigger_after_update after update on crm_callback
    for each row
    begin
      select max(service_date) into @max_service_date from crm_callback where tid = new.tid and account_id = new.account_id and contact_id = new.contact_id;
        update task_contact set max_service_date = @max_service_date where tid = new.tid and aid = new.account_id and cid = new.contact_id;
    end;//
delimiter ;

drop trigger if exists crm_callback_trigger_after_delete;
delimiter //
create trigger crm_callback_trigger_after_delete after delete on crm_callback
    for each row
    begin
      select max(service_date) into @max_service_date from crm_callback where tid = old.tid and account_id = old.account_id and contact_id = old.contact_id;
        update task_contact set max_service_date = @max_service_date where tid = old.tid and aid = old.account_id and cid = old.contact_id;
    end;//
delimiter ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值