如何创建CLR对象
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍了如何创建CLR对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 创建CLR对象1.在解决方案中添加新的C#SQL
千家信息网最后更新 2025年01月16日如何创建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安全错误
数据库的锁怎样保障安全
数据库在计算机发展中的作用
网络安全工程师证有什么用
万方数据库单库有哪些
做网络安全的研究所
功能模块怎么和服务器相连
网络技术应用选修知识点
平台数据库接入交通运输监管
松江区合格软件开发诚信合作
甘肃专业网络技术服务五星服务
食品领域的外文摘要数据库有哪些
用手机开一个服务器
这样让腾讯会议服务器崩溃
成都程序软件开发需要多少钱
计算机网络技术诊断题
数据库原理及应用课件
网络安全对学校的重要性
如何选择图像处理服务器
张家港品质网络技术怎么样
海康服务器默认密码
数据库优化android
甘肃省网络安全等级
河北网络技术基础
长沙致友软件开发
虚拟机修复数据库
数据库的安全目标不包括自考
支付宝服务器报错500
卡方数据库
硬核科技互联网公司
佛山软件开发中心
sql安装后创建数据库