zoukankan      html  css  js  c++  java
  • 板机--再次启动

           关于触发器在房间里重塑事实是,我们已经参与了,一些使用触发器一些使用存储过程。

    如今在牛腩中我们又遇到了使用触发器。让我们再次出发看看到底怎么使用。                 

        在牛腩视频中要实现对删除类别的操作,我们使用一般的SQL语句去删除会出现这种错误:

        { DELETE语句与REFERENCE约束“FK_news_category”冲突。该冲突发生于数据库“newssystem”,表“dbo.news” 语句终止;}

        出现这样的错误的原因就是各表直接有主键外键约束 ,如数据库关系图:

                      

           首先我们知道SQL Server 包含三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。                  

         要想完美删除类别表下的新闻以及评论就用到了触发器。当数据库中表中的数据发生变化时,包含insert,update,delete随意操作,我们对该表写相应的DML触发器。该触发器自己主动运行所以这里我们用的触发器应该叫DML触发器。

                     

    <span style="font-family:KaiTi_GB2312;">-- =============================================
    -- Author:		刘伟
    -- Create date: <2014-9-22  11:28
    -- Description:	删除类别触发器
    -- =============================================
    ALTER TRIGGER [dbo].[trigCategoryDelete]
       ON [dbo].[category]
       instead of DELETE
    AS 
    BEGIN
    	declare @caId int
    	select @caId=id from deleted
    	--删除评论
    	delete comment where newsId in(select newsId from news where caId=@caId )
    	--删除新闻
    	delete news where caId=@caId
    	--删除类别
    	delete category where id=@caId
    
    END</span>


        小结:使用 DML触发器可通过数据库中的相关表实现级联更改,通过级联引用完整性约束能够更有效地运行这些更改。触发器与存储过程的唯一差别是触发器不能运行EXECUTE语句调用,而是在用户运行Transact-SQL语句时自己主动触发运行。





    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    html5-特殊符号的使用
    html5-表格
    html5-列表
    html5-绝对路径/相对路径
    html5-嵌入图片
    html5-超级链接
    html5-常用的文本元素
    html5-了解元素的属性
    Scanner类throwFor(Unknown Source)及跳过下一个扫描器分析
    有关HashMap的一些问题及解答
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4839126.html
Copyright © 2011-2022 走看看