定义:触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性;
特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行;
作用:保证数据的完整性,起到约束的作用;
弊端:增加程序的复杂度,有些业务逻辑在代码中处理,有些业务逻辑用触发器处理,会使后期维护变得困难;

实例:

主表字段ISBN
在触发器里面增加insert2index触发器,触发类型选择:AFTER,勾选“插入”
定义里面输入
begin   
    insert into huiya_cover_index (pid,isbn) values( NEW.id,NEW.isbn);  
        if ((length(NEW.isbn)=10)and(left(NEW.isbn ,1)='7')) then 
        insert into huiya_cover_index (pid,isbn) values( NEW.id,SUBSTRING(NEW.isbn,2,8));  
        elseif  ((length(NEW.isbn)=13)and(left(NEW.isbn ,3)='978')) then         
        insert into huiya_cover_index (pid,isbn) values( NEW.id,SUBSTRING(NEW.isbn,5,8));   
    end if;  
end
意思是在插入isbn后在索引表总插入pid和isbn,然后将isbn处理后继续再在索引表中存储一条索引记录,isbn分为10位和13位,用不同方法处理

继续增加delete_index触发器,勾选“删除”
begin
        delete from huiya_cover_index where pid=OLD.id;   
end
该条定义是如果主表中删除了相关记录,就把索引表中的包含该pid的记录全部删除

此处由于涉及不到更新,所以没有建更新触发器。


触发器:NEW和OLD的使用:
INSERT型触发器:NEW表示将要或者已经新增的数据
UPDATE型触发器:OLD用来表示将要或者已经被删除的语句,NEW表示将要或者已经修改的数据
DELETE型触发器:OLD表示将要或者已经被删除的数据