iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >CLR触发器的示例分析
  • 508
分享到

CLR触发器的示例分析

2023-06-17 21:06:56 508人浏览 八月长安
摘要

这篇文章主要介绍了CLR触发器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CLR触发器实现代码:[Microsoft.sqlServer.Server.SqlTr

这篇文章主要介绍了CLR触发器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

CLR触发器实现代码:

[Microsoft.sqlServer.Server.SqlTrigger(Name = "Trigger1", Target = "ERP_STOCKYaoHuoDingDan", Event = "FOR INSERT")]  public static void DingDanIDSameGongYingShangGUIDMustSame()  {    using (SqlConnection connection = new SqlConnection(@"context connection=true"))    {      connection.Open();      SqlCommand command = new SqlCommand(@"SELECT COUNT(A.DingDanID) FROM ERP_STOCKYaoHuoDingDan AS A,INSERTED AS B WHERE A.DingDanID=B.DingDanID AND A.GongYingShangGUID<>B.GongYingShangGUID", connection);      int i=(int)command.ExecuteScalar();       if (i>0)     {      try       {        //如果要插入的记录不合法,则回滚.          Transaction trans = Transaction.Current;         trans.Rollback();       }       catch (SqlException ex)         {                connection.Close();        }     }  }}

当在CLR触发器内部调用 Transaction.Rollback 方法时,将引发异常并显示不明确的错误消息,必须在try/catch 块中包装此方法或命令。您会看到如下错误消息:

Msg 6549, Level 16, State 1, Procedure trig_InsertValidator, Line 0 A .net Framework error occurred during execution of user defined routine or aggregate 'trig_InsertValidator': System.Data.SqlClient.SqlException: Transaction is not allowed to roll back inside a user defined routine, trigger or aggregate because the transaction is not started in that CLR level. Change application logic to enforce strict transaction nesting… User transaction, if any, will be rolled back.

此异常是预期行为,需要 try/catch 块才能继续执行代码。当完成执行CLR触发器代码时,将引发另一个异常。

Msg 3991, Level 16, State 1, Procedure trig_InsertValidator, Line 1 The context transaction which was active before entering user defined routine, trigger or aggregate "trig_InsertValidator" has been ended inside of it, which is not allowed. Change application logic to enforce strict transaction nesting. The statement has been terminated.
此异常也是预期行为。

调用该CLR触发器的例子

尽管引发了两个异常,仍可以回滚事务,并且更改不会提交到表中。

try  {       //用到此触发器的方法  }  catch (SqlException ex)  {     if (ex.Number == 3991)     {        LabelInfor.Text = "同一张订单必须是同一家供应商。";     }  }  catch (Exception ex)  {   ......  }

感谢你能够认真阅读完这篇文章,希望小编分享的“CLR触发器的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: CLR触发器的示例分析

本文链接: https://www.lsjlt.com/news/293387.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CLR触发器的示例分析
    这篇文章主要介绍了CLR触发器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CLR触发器实现代码:[Microsoft.SqlServer.Server.SqlTr...
    99+
    2023-06-17
  • CLR程序集的示例分析
    小编给大家分享一下CLR程序集的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、CLR程序集教程之体系结构程序集是一个抽象的概念,程序集是一个或多个托管...
    99+
    2023-06-17
  • Oracle触发器和游标的示例分析
    小编给大家分享一下Oracle触发器和游标的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!触发器:1、 创建一个用于记录用户操作的触发器  创建一个dep...
    99+
    2023-06-20
  • mysql触发器之创建多个触发器操作的示例分析
    这篇文章将为大家详细讲解有关mysql触发器之创建多个触发器操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。这次记录的内容mysql 版本必须得是5.7.2+...
    99+
    2024-04-02
  • MySQL中存储函数、触发器的示例分析
    这篇文章主要介绍了MySQL中存储函数、触发器的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 创建函数: 1....
    99+
    2024-04-02
  • Vue3中触发组件选项的示例分析
    小编给大家分享一下Vue3中触发组件选项的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!事件名与组件和prop一样,事件...
    99+
    2024-04-02
  • MySQL与Oracle 差异比较之触发器的示例分析
    小编给大家分享一下MySQL与Oracle 差异比较之触发器的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!触发器编号类...
    99+
    2024-04-02
  • CLR集成性能设计选择的示例分析
    这篇文章将为大家详细讲解有关CLR集成性能设计选择的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.编译过程 在编译 SQL 表达式时,如果遇到对托管例程的引用,则生成 Microsoft 中间...
    99+
    2023-06-17
  • 数据库触发器举例分析
    这篇文章主要讲解了“数据库触发器举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库触发器举例分析”吧!我们维护一张客户表,这张表的内容在周六和周日...
    99+
    2024-04-02
  • go:垃圾回收GC触发条件的示例分析
    这篇文章将为大家详细讲解有关go:垃圾回收GC触发条件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。什么是gogo是golang的简称,golang 是Google开发的一种静态强类型、编译型、...
    99+
    2023-06-14
  • Object.assign触发watch原理示例解析
    目录为什么可以用Object.assign触发$watch先看vue2文档用Object.assign触发watch原理为什么可以用Object.assign触发$watch Obj...
    99+
    2022-11-13
    Object.assign触发watch Object assign watch
  • html5 datalist选中option选项后触发事件的示例分析
    这篇文章将为大家详细讲解有关html5 datalist选中option选项后触发事件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用input + datalist 实现自动补全功能,其中d...
    99+
    2023-06-09
  • mysql触发器之触发器的增删改查操作示例
    本文实例讲述了mysql触发器之触发器的增删改查操作。分享给大家供大家参考,具体如下: 我们在创建触发器后,可以在包含触发器定义文件的数据文件夹中显示其定义。触发器作为纯文本文件存储在以下数据库文件夹中: ...
    99+
    2024-04-02
  • Angular开发的示例分析
    这篇文章给大家分享的是有关Angular开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是AngularAngularJS是动态Web应用程序的结构框架。 它允许...
    99+
    2024-04-02
  • Java中并发容器的示例分析
    这篇文章给大家分享的是有关Java中并发容器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、并发容器1.1 JDK 提供的并发容器总结JDK 提供的这些容器大部分在java.util.concurre...
    99+
    2023-06-15
  • 运用SQL SERVER 2005 CLR解决XML 的实例分析
    运用SQL SERVER 2005 CLR解决XML 的实例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。大家都知道SQL SERVER 2005 CLR(...
    99+
    2023-06-17
  • MySQL触发器简单用法示例
    本文实例讲述了MySQL触发器简单用法。分享给大家供大家参考,具体如下: mysql触发器和存储过程一样,是嵌入到mysql的一段程序,触发器是由事件来触发的,这些事件包括,INSERT,UPDATE,DE...
    99+
    2024-04-02
  • Linux发行版的示例分析
    这篇文章给大家分享的是有关Linux发行版的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux 是什么简单来说, Linux 是一个类 Unix 的开源操作系统。就像 Windows 或者 Mac ...
    99+
    2023-06-16
  • JS中触摸与手势事件的示例分析
    这篇文章给大家分享的是有关JS中触摸与手势事件的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下1.触摸事件 包含 iOS 2.0 软件的 iPhone 3G ...
    99+
    2024-04-02
  • Linux发展史的示例分析
    这篇文章主要介绍Linux发展史的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux发展史1. 什么是操作系统我们在使用电脑时候,一般是使用应用程序的,你比如说我现在在Chrome浏览器访问云栖社区。C...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作