千家信息网

如何创建CLR对象

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了如何创建CLR对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 创建CLR对象1.在解决方案中添加新的C#SQL
千家信息网最后更新 2026年10月31日如何创建CLR对象

这篇文章主要介绍了如何创建CLR对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一 创建CLR对象

1.在解决方案中添加新的C#SQL数据库项目,命名为"ServiceClient"
2.为你的目标数据库选择或添加注释。(如果未被提示:右击ServiceClient项目,选择属性,数据库,浏览并选择你的连接)
3.为创建的服务添加声明
1)在解决方案浏览器中右击"service"项目,选择"调试">"Start New Instance"
2)服务运行:右击"ServiceClient"项目,选择"Add Service Reference"
3)在"Service URI"中输入:http://localhost:8000/services
4)点击"OK"

二 CLR触发器案例

[Microsoft.SqlServer.Server.SqlTrigger(Name="Trigger1",Target="ERP_STOCKYaoHuoDingDan",Event="FORINSERT")]  publicstaticvoidDingDanIDSameGongYingShangGUIDMustSame()  {  using(SqlConnectionconnection=newSqlConnection(@"contextconnection=true"))  {  connection.Open();  SqlCommandcommand=newSqlCommand(@"SELECTCOUNT(A.DingDanID)FROMERP_STOCKYaoHuoDingDanASA,INSERTEDASBWHEREA.DingDanID=B.DingDanIDANDA.GongYingShangGUID<>B.GongYingShangGUID",connection);  inti=(int)command.ExecuteScalar();  if(i>0)  {  try  {  //如果要插入的记录不合法,则回滚.  TransactionTransactiontrans=Transaction.Current;  trans.Rollback();  }  catch(SqlExceptionex)  {

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

Msg6549,Level16,State1,Proceduretrig_InsertValidator,Line0A.NETFrameworkerroroccurredduringexecutionofuserdefinedroutineoraggregate  'trig_InsertValidator':System.Data.SqlClient.SqlException:Transactionisnotallowedtorollbackinsideauserdefinedroutine,  triggeroraggregatebecausethetransactionisnotstartedinthatCLRlevel.Changeapplicationlogictoenforcestricttransactionnesting…Usertransaction,ifany,willberolledback.  此异常是预期行为,需要try/catch块才能继续执行代码。当完成执行触发器代码时,将引发另一个异常。  Msg3991,Level16,State1,Proceduretrig_InsertValidator,Line1Thecontexttransactionwhichwasactivebeforeenteringuserdefinedroutine,  triggeroraggregate"trig_InsertValidator"hasbeenendedinsideofit,whichisnotallowed.Changeapplicationlogictoenforcestricttransactionnesting.  Thestatementhasbeenterminated.此异常也是预期行为。  }  }  connection.Close();  }  }

调用CLR触发器的例子

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

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

感谢你能够认真阅读完这篇文章,希望小编分享的"如何创建CLR对象"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

触发器 选择 篇文章 项目 对象 数据 数据库 代码 方案 方法 消息 行为 解决方案 错误 服务 浏览 一家 两个 中右 事务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网的科技 互联网科技有限公司图片 朗新科技与工业互联网 极限挑战互联网科技 银优互联网科技有限公司 互联网科技ppt模板 天扬科技互联网广告 深圳卡尔迅互联网科技有限公司怎么样 衡水科技产业互联网平台 蓝色互联网科技 济南和联互联网科技有限公司 青岛中康互联网医疗科技有限公司 银川新华互联网科技职业技术培训学校图片 广西互联网科技孵化中心 群盈汇互联网科技有限公司 伊宁互联网科技做什么的 广州富喜互联网络科技 世界互联网科技成果奖 科技互联网行业投资研究 恒生科技互联网指数十大成分股 互联网科技与金融科技 广州善班互联网科技 太原新华互联网科技学校怎么样 湖南一路畅行互联网科技 互联网行业科技股 无锡工业互联网科技有限公司 怎样加入科技互联网 互联网与数字科技关系 互联网时代高科技布局 长沙易易互联网科技有限公司
0