1、可以跟踪用户对数据库的操作
2、在修改或删除时级联修改或删除其它关联表中的匹配的行。
3、同步实时地复制表中的数据到另一个表中.
目前的项目中要求,对表的操作要保留日志,自然想到了用触发器。在使用sybase触发器的时候要用到两个临时表:deleted和inserted。在向数据库中插入记录的时候,会把记录也插向inserted中,在更新或者删除记录时,会把要删除的记录保存到deleted表中。这时候就可以根据需要从inserted和deleted表中取数据了。
一个是机构表:t_s_dept,一个是人员表:t_b_jcxx_ryxx,当修改机构信息时,dept_his表中保存修改前的记录;在修改人员信息时,ryxx_his中保存修改前的记录.
//机构触发器
create trigger trg_idu_dept
on t_s_dept
for delete,update,insert
as
insert into dept_his select id,dept_code,dept_name,dept_level,dept_manager,dept_lx,yybz,lxr,lxdh,addr,zxbz,glhbz,nbbh,tstamp,status from deleted
insert into dept_his select id,dept_code,dept_name,dept_level,dept_manager,dept_lx,yybz,lxr,lxdh,addr,zxbz,glhbz,nbbh,tstamp,status from inserted
//人员触发器
create trigger trg_idu_ryxx
on t_b_jcxx_ryxx
for delete,update,insert
as
insert into ryxx_his select id, per_card,per_name,per_code,per_xl,per_xz,per_rzk,dep_id,per_birth,per_xb,per_status,per_level,phone,byyx,zy,money_box,pzx_tag,tstamp,status from deleted
insert into ryxx_his select id,per_card,per_name,per_code,per_xl,per_xz,per_rzk,dep_id,per_birth,per_xb,per_status,per_level,phone,byyx,zy,money_box,pzx_tag,tstamp,status from inserted
注意:触发器名称定义不能使用"-",但可以使用"_".