当前位置:
  1. 魔豆IT网
  2. 系统教程
  3. 触发器
  4. 正文

实例:在一个基表上创建insert,update,delete这三个触发器,将对基表的操作保存在监控表中,达到监控基表的操作过程

创建基表table_trigger1

createtabletable_trigger1(

id1char(10),--id1,唯一

name1char(20),--姓名

primarykey(id1)-----基表必须要有关键子,不然通过监控表无法获知对哪一行数据进行了操作

)

创建监控表

createtabletable_trigger2(

id2char(10),--id2,对应操作基表的id1,这里的id2不能设置为主键,因为对基表的某一行可以操作多次

kindvarchar(1),--类型,用I来表示insert,U来表示update,D来表示delete

time2datetimeyeartofraction(5)--时间,表示操作发生的时间

)

创建3个触发器:

insert触发器

createtriggertrigger_insert--创建trigger_insert触发器

insertontable_trigger1--在基表table_trigger1表创建insert触发事件

referencingNEWasnew--定义new在后面要使用

foreachrow--使用referencing语句的前提条件,必须加上

(

insertintotable_trigger2(id2,kind,time2)//向监控表table_trigger2插入数据

values(new.id1,'I',current)//current表示触发时的时间

);

update触发器

createtriggertrigger_update

updateontable_trigger1

referencingOldasold

foreachrow

(

insertintotable_trigger2(id2,kind,time2)

values(old.id1,'U',current)

);

delete触发器

createtriggertrigger_delete

deleteontable_trigger1

referencingOldasold

foreachrow

(

insertintotable_trigger2(id2,kind,time2)

values(old.id1,'D',current)

);

测试:

执行下面4句sql语句

insertintotable_trigger1values('1','name1');

insertintotable_trigger1values('2','name');

updatetable_trigger1setname1='newName1'whereid1='1';

deletetable_trigger1whereid1='2';

在监控表table_trigger2中的数据:

id2kindtime2

1I发生时刻

2I发生时刻

1U发生时刻

2D发生时刻

通过监控表就可以详细的知道table_trigger1表的数据变化情况了

相关阅读

  • 暂无推荐

《》由网友“”推荐。

转载请注明: