MySQL-触发器
触发器
触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行。
特点
监视地点:表名
监视事件:update,delete,insert
触发时间:after,before
触发事件:update,delete,insert
它不能直接调用,是由数据库主动执行。
特别说明
1.对于insert,新插入的行用new表示,行中每一列的值用new.列名来表示。
2.对于delete,用old表示,old.列名可以引用被删除的行的值。
3.对于update 修改前的数据用old表示,修改后的用new
create trigger tr_insert after insert
on employee for each row
begin
insert department values(new.id,'ttt');
end
$$;
create trigger tr_delete before delete
on employee for each row
begin
delete from department where id=old.id;
end
$$;
create trigger tr_update after update
on employee for each row
begin
update department set depName='hhh' where id=2;
end
$$;
查看触发器
show triggers\G
查看触发器的结构
desc information_schema.triggers
查看触发器的名字
select * from information_schema.triggers where trigger_name='tr_delete'\G
删除触发器
drop trigger tr_delete;
存储过程与触发器的区别
触发器与存储过程非常相似,触发器也是SQL语句集,
两者唯一的区别是触发器不能用EXECUTE语句调用,
而是在用户执行Transact-SQL语句时自动触发(激活)执行。
触发器是在一个修改了指定表中的数据时执行的存储过程。
通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。
由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,
以确保数据的完整性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,
而存储过程可以通过存储过程名称名字而直接调用。当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,
SQLSERVER就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则。