牛腩新闻发布系统笔记6:SQL触发器:实现数据的联动删除

来源:互联网 发布:人工智能无人驾驶飞机 编辑:程序博客网 时间:2024/05/08 11:42

当执行了SQL语句后,自动触发被执行表的触发器,我们可以在这个触发器中添加一些操作,从而实现执行了SQL语句后触发这些操作的目的。
创建触发器:


CREATE TRIGGER trigCategoryDAO//触发器名称   ON category//触发器作用域   AFTER DELETE//触发器被DELETE操作触发,就是说,当执行结束DELETE操作后,触发器被触发AS BEGINselect * from deleted//触发器执行的具体操作ENDGO




触发器有个临时表deleted:
在触发器中添加代码:
BEGIN

select * from deleted


END
当执行删除SQL语句后,那么触发器会把删除后的的数据暂时存储在临时表deleted中。



实现类别表和新闻表的联动删除  :

执行SQL语句:delete category where id=5执行触发器:ALTER TRIGGER [trigCategoryDAO]   ON [dbo].[category]   instead of DELETE//当执行DELETE语句的时候,不执行DELETE语句,转而执行触发器的内容ASBEGINdeclare @id intselect @id=id from deleted//获取delete语句中的id值//先删除和类别id对应的新闻表delete news where caId=@id//然后再删除类别delete category where id=@idEND




三级联动删除(当删除类别的时候,同时删除和类别包含的新闻以及新闻包含的评论):

ALTER TRIGGER [trigCategoryDAO]   ON [dbo].[category]   instead of DELETEAS BEGINdeclare @caId intselect @caId=id from deleted--删除评论delete comment where newsId in (select newsId from news where caId=@caId)//注意,这里用in,因为一个新闻的newsId 可能包含很多评论--删除新闻delete news where caId=@caId--删除类别delete category where id=@caIdEND


	
				
		
原创粉丝点击