SQL触发器在保持数据库完整性中的实际应用(二)

日期: 2008-07-10 作者:Andy 来源:TechTarget中国

2)创建触发器


  根据需求分析,为BBS_Type表、BBS_LanMu表、BBS_Topic表分别建立AFTER触发器,该触发器由delete事件触发。建立在这3个表之上的触发器之间是嵌套触发的关系,即BBS_Type表上的触发器触发BBS_LanMu表上的触发器,BBS_LanMu表上的触发器再触发BBS_Topic表上的触发器。本文中使用的数据库为Microsoft SQL Server 2005。要让触发器能嵌套触发必须在数据库“属性”中,将“递归触发器已启用”设置为TRUE。


  1.为BBS_Type表(存储大版块信息)建立触发器DelType。该触发器功能是删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。


  create trigger [DelType] on [dbo].[BBS_Type]


  after delete


  as


  begin


  declare @typeid int


  select @typeid=TypeID from deleted –获得要被删除的版块ID


  delete from dbo.BBS_LanMu where Typeid=@typeid


  end


  2.为BBS_LanMu表(存储分论坛信息)建立触发器DelLanmu。该触发器功能是删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。


  create trigger [DelLanmu] on [dbo].[BBS_LanMu]


  AFTER delete


  as


  BEGIN


  declare @lmid int


  select @lmid=Lmid from deleted –获得要被删除的分论坛ID


  delete from dbo.BBS_Topic where Lmid=@lmid


  END


  3.为BBS_Topic表(存储帖子信息)建立触发器DelTopic。该触发器功能是删除BBS_Reply表中属于刚删除帖子的所有回复信息。


  create trigger [DelTopic] on [dbo].[BBS_Topic]


  after delete


  as


  BEGIN


  declare @tid int


  select @tid=TID from deleted –获得要被删除的帖子ID


  delete from dbo.BBS_Reply where TID=@tid


  END


  执行过程


  触发器执行过程如图Pic-2。


  触发器执行过程如图


  当数据操作层对数据表BBS_Type发出delete一条记录的时候,触发器DelType被触发,此触发器将删除BBS_LanMu表中属于刚删除的大版块的所有分论坛信息。


  当DelType触发器对数据表BBS_LanMu删除一条记录时,又触发BBS_LanMu表上的触发器DelLanmu,此触发器将删除BBS_Topic表中属于刚删除分论坛的所有帖子信息。


  当DelLanmu触发器对数据表BBS_Topic删除一条记录时,又触发触发器DelTopic,此触发器将删除BBS_Reply表中属于刚删除帖子的所有回复信息。


  至此数据库中与BBS_Type中删除记录相关联的所有记录全部删除,保证了数据库各表数据的完整性与一致性。这个过程是在数据库中自动进行的,因此速度非常快,用户只需要对BBS_Type表发出删除一条记录的命令,其他表中相关的记录会自动删除。


  3.1.总结:


  触发器能保持数据的完整性与一致性,它可以方便地基于一个表的修改,自动更新其他相关表的记录,以保证数据的完整性。在数据库的应用中,触发器扮演着很重要的角色。无论是作为提供高级参照完整性功能的途径,还是执行自动维护非正规化数据的任务,触发器都能帮助用户实现满足实际需要的规则,简化业务逻辑,并使系统更方便更有效。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Andy
Andy

相关推荐