邓大林

我的学习历程
Informix触发器实例
    1. 实例:在一个基表上创建insert,update,delete这三个触发器,将对基表的操作保存在监控表中,达到监控基表的操作过程  
    2.   
    3. 创建基表table_trigger1  
    4. create table table_trigger1 (  
    5. id1 char(10), --id1,唯一  
    6. name1 char(20), --姓名  
    7. primary key(id1) -----基表必须要有关键子,不然通过监控表无法获知对哪一行数据进行了操作  
    8. )  
    9. 创建监控表  
    10. create table table_trigger2 (  
    11. id2 char(10), --id2,对应操作基表的id1,这里的id2不能设置为主键,因为对基表的某一行可以操作多次  
    12. kind varchar(1), --类型,用I来表示insert,U来表示update,D来表示delete  
    13. time2 datetime year to fraction(5) --时间,表示操作发生的时间  
    14. )  
    15.   
    16. 创建3个触发器:  
    17. insert触发器  
    18. create trigger trigger_insert -- 创建trigger_insert 触发器  
    19. insert on table_trigger1 --在基表table_trigger1表创建insert触发事件  
    20. referencing NEW as new --定义new 在后面要使用  
    21. for each row --使用referencing语句的前提条件,必须加上  
    22. (  
    23. insert into table_trigger2 (id2,kind,time2) //向监控表table_trigger2插入数据  
    24. values (new.id1,'I',current) //current表示触发时的时间  
    25. );  
    26.   
    27. update触发器  
    28. create trigger trigger_update  
    29. update on table_trigger1  
    30. referencing Old as old  
    31. for each row  
    32. (  
    33. insert into table_trigger2 (id2,kind,time2)  
    34. values (old.id1,'U',current)  
    35. );  
    36.   
    37. delete触发器  
    38. create trigger trigger_delete  
    39. delete on table_trigger1  
    40. referencing Old as old  
    41. for each row  
    42. (  
    43. insert into table_trigger2 (id2,kind,time2)  
    44. values (old.id1,'D',current)  
    45. );  
    46.   
    47. 测试:  
    48. 执行下面4句sql语句  
    49. insert into table_trigger1 values ('1','name1');  
    50. insert into table_trigger1 values ('2','name');  
    51. update table_trigger1 set name1='newName1' where id1='1';  
    52. delete table_trigger1 where id1='2';  
    53.   
    54. 在监控表table_trigger2中的数据:  
    55. id2   kind   time2  
    56. 1     I      发生时刻  
    57. 2     I      发生时刻  
    58. 1     U      发生时刻  
    59. 2     D      发生时刻  
    60.   
    61. 通过监控表就可以详细的知道table_trigger1表的数据变化情况了

posted on 2012-05-16 11:51  邓大林  阅读(443)  评论(0编辑  收藏  举报