社区
疑难问题
帖子详情
关于触发器递归调用的疑问?请高手指教!!有分
ghosthjt
2003-11-14 05:05:20
关于触发器的执行的问题,我有很多疑问,比如当一个表中存在多个触发器对同一事件进行触发时,是按照什么规则或者说是顺序进行触发的?对于触发器的递归调用,它是按照执行完一个触发器,然后再执行由它触发的触发器呢,还是一遇到诸如inert,update 等语句时马上触发相应的触发器呢?
...全文
42
9
打赏
收藏
关于触发器递归调用的疑问?请高手指教!!有分
关于触发器的执行的问题,我有很多疑问,比如当一个表中存在多个触发器对同一事件进行触发时,是按照什么规则或者说是顺序进行触发的?对于触发器的递归调用,它是按照执行完一个触发器,然后再执行由它触发的触发器呢,还是一遇到诸如inert,update 等语句时马上触发相应的触发器呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nobelpu
2003-11-28
打赏
举报
回复
来源帮助文档:
使用嵌套触发器
如果一个触发器在执行操作时引发了另一个触发器,而这个触发器又接着引发下一个触发器……这些触发器就是嵌套触发器。触发器可嵌套至 32 层,并且可以控制是否可以通过"嵌套触发器"服务器配置选项进行触发器嵌套。
如果允许使用嵌套触发器,且链中的一个触发器开始一个无限循环,则超出嵌套级,而且触发器将终止。
可使用嵌套触发器执行一些有用的日常工作,如保存前一触发器所影响行的一个备份。例如,可以在 titleauthor 上创建一个触发器,以保存由 delcascadetrig 触发器所删除的 titleauthor 行的备份。在使用 delcascadetrig 时,从 titles 中删除title_id PS2091 将删除 titleauthor 中相应的一行或多行。要保存数据,可在 titleauthor 上创建 DELETE 触发器,该触发器的作用是将被删除的数据保存到另一个单独创建的名为 del_save 表中。例如:
CREATE TRIGGER savedel
ON titleauthor
FOR DELETE
AS
INSERT del_save
SELECT * FROM deleted
不推荐按依赖于顺序的序列使用嵌套触发器。应使用单独的触发器层叠数据修改。
说明 由于触发器在事务中执行,如果在一系列嵌套触发器的任意层中发生错误,则整个事务都将取消,且所有的数据修改都将回滚。在触发器中包含 PRINT 语句,用以确定错误发生的位置。
递归触发器
触发器不会以递归方式自行调用,除非设置了 RECURSIVE_TRIGGERS 数据库选项。有两种不同的递归方式:
直接递归
即触发器激发并执行一个操作,而该操作又使同一个触发器再次激发。例如,一应用程序更新了表 T3,从而引发触发器 Trig3。Trig3 再次更新表 T3,使触发器 Trig3 再次被引发。
间接递归
即触发器激发并执行一个操作,而该操作又使另一个表中的某个触发器激发。第二个触发器使原始表得到更新,从而再次引发第一个触发器。例如,一应用程序更新了表 T1,并引发触发器 Trig1。Trig1 更新表 T2,从而使触发器 Trig2 被引发。Trig2 转而更新表 T1,从而使 Trig1 再次被引发。
当将 RECURSIVE_TRIGGERS 数据库选项设置为 OFF 时,仅防止直接递归。若要也禁用间接递归,请将 nested triggers 服务器选项设置为 0。
pengdali
2003-11-28
打赏
举报
回复
触发器是事务内执行的。
junny1017
2003-11-28
打赏
举报
回复
如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行
所以像你所说的这样的情况下,就很有可能得出的结果不是你想要的结果,如果你有这么多不同的条件来控制field1的值的话,你可以把它写在一个TRIGGER里面,分别写出不同条件下得出不同的值!
另:触发器应尽量简洁短小,不到万不得以已最好不要考虑用TRIGGER(我的个人意见)
ghosthjt
2003-11-17
打赏
举报
回复
"如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行",这个问题很是麻烦,比如有多个触发器对同一个表中的一些字段行了修改,它们会相互触发,这样的话,在同一类型的触发器中就很难判断被修改过的字段的值是什么了。比如field1它在添加的时候为空,trigger1把它改为1,trigger2根据一些条件把它改为2,...然后还有一个triggerN想根据field1的值做相应的动作,但这个值现在是不是难以判断了呢??不知道各位在遇到这种问题的时候怎么处理??
zjcxc
2003-11-14
打赏
举报
回复
递归触发器
当在 sp_dboption 中启用 recursive triggers 设置时,SQL Server 还允许触发器的递归调用。
触发器的递归调用的触发时间
遇到诸如inert,update 等语句时马上触发相应的触发器
zjcxc
2003-11-14
打赏
举报
回复
可用 sp_settriggerorder 指定表上第一个和最后一个执行的 AFTER 触发器。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
在表上只能为每个 INSERT、UPDATE 和 DELETE 操作指定一个第一个执行和一个最后一个执行的 AFTER 触发器。
如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
txlicenhe
2003-11-14
打赏
举报
回复
联机帮助:
sp_settriggerorder
企业管理器->服务器->属性->服务器设置->允许激发会激发其它触发器(嵌套触发器)的触发器
勾上即可以嵌套,否则不会嵌套。
pengdali
2003-11-14
打赏
举报
回复
--改触发器执行顺序
sp_settriggerorder 触发器名, first, 'UPDATE'
wzh1215
2003-11-14
打赏
举报
回复
用连机帮助!
<数据集>yolo安全手套佩戴识别<目标检测>
YOLO与VOC格式的安全手套佩戴识别数据集,适用于YOLO系列、Faster Rcnn、SSD等模型训练,类别:Not Glove Wearing、Glove Wearing,图片数量4684。文件中包含图片、txt标签、指定类别信息的yaml文件、xml标签,已将图片和txt标签划分为训练集、验证集和测试集,可直接用于YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12、YOLOv13、YOLOv26等YOLO系列算法的训练。 数据集介绍链接:https://blog.csdn.net/qq_53332949/article/details/161738649?spm=1011.2415.3001.5331
基于下垂系数功率分配的双机并联VSG微电网黑启动控制仿真研究(Simulink仿真实现)
内容概要:本文围绕基于下垂系数功率分配的双机并联虚拟同步发电机(VSG)微电网黑启动控制开展研究,重点利用Simulink仿真平台构建系统模型,实现微电网在无外部电网支撑条件下的自主启动与稳定运行。研究通过引入VSG技术模拟同步发电机的惯性和阻尼特性,结合下垂控制策略实现双机并联系统在黑启动过程中的有功与无功功率协调分配,有效抑制电压频率波动和功率振荡问题。文中详细阐述了控制系统的架构设计、核心控制环路的实现方式、关键参数的整定方法,并通过仿真结果验证了所提出控制策略在动态响应、负载突变及系统恢复等方面的优越性能,为提升微电网的自主恢复能力与供电可靠性提供了有效的技术路径。; 适合人群:具备电力系统、电力电子与自动控制等相关专业知识背景,熟悉Simulink/MATLAB仿真环境,从事微电网、分布式能源系统、VSG控制等领域研究的科研人员、高校教师及硕士、博士研究生。; 使用场景及目标:①深入理解虚拟同步发电机(VSG)的工作原理及其在黑启动中的应用价值;②掌握基于下垂控制的双机并联系统功率均分与稳定控制技术;③构建完整的微电网黑启动仿真模型,服务于科研论文撰写、课题申报、实验教学或工程预研。; 阅读建议:此资源以仿真为核心手段,建议读者在学习过程中结合理论分析,动手搭建Simulink模型,逐步调试控制器参数,深入探究下垂系数、虚拟惯量等关键参数对系统动态性能的影响,并可进一步拓展至多机并联、含储能单元或复杂负载工况的场景进行深化研究。
World's First Full-Chinese Ray-Ban Meta AI Assistant - 全球首个全中文 R.zip
AI 解题助手,考试助手,在「面试」或「在线考试」时,借助AI实时提供解题思路和答案。
SpringAI项目学习.zip
基于 SpringAI 的 Agent 开发项目:一个面向“组织知识库 + AI 助手”的 RAG Agent实战项目,把权限隔离、文档入库、混合检索、证据约束、Agent 工具调用和 Docker 部署串成了一条完整工程链路。如果你正在找一个能写进简历、能讲清架构、能覆盖 S…
k8s Jenkins流水线自动化部署java+vue服务.rar
代码转载自:https://pan.quark.cn/s/40f210c80302 借助Jenkins的自动化流程将Java应用程序推送至k8s平台,关键在于将宿主机环境中的docker、helm以及kubectl这些组件整合进Jenkins的从节点,以便进行应用镜像的构建并实施在k8s环境中。
疑难问题
22,297
社区成员
121,728
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章