当前位置: 主页 > 编程知识 > Mssql数据库 > SQL触发器在保持数据库完整性中的实际应用

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

时间:2009-11-23来源:站长资讯网 点击:

(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

执行过程

当数据操作层对数据表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.总结:

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

 

站长资讯网
.
分页: [1] [2]
TAG: SQL 数据库 触发器 应用
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言