我通过脚本化6.5中的模式将SQL Server 6.5数据库升级到SQL Server 2012,修复了此脚本中的任何语法问题,然后使用此脚本创建了2012年数据库。SQL Server嵌套触发器未按预期触发
与此同时,我将前端应用程序从PowerBuilder 6升级到12.5。
当我在应用程序中执行某个动作时,它会将数据插入给定的表中。该表具有与INSERT操作关联的触发器,并且在该触发器内更新其他表。这会导致其他触发器在这些表上触发。
最初的PowerBuilder应用程序报告以下错误:检索和更新之间
行改变。
对数据库没有更改。
现在我明白这个错误信息是什么意思,但这是它真正'有趣'的地方!
为了理解触发器中发生了什么,我决定从触发器内插入数据到日志表中,以便更好地理解事件的流程。这有一个意想不到的副作用 - PowerBuilder应用程序不再报告任何错误,并且当我检入数据库时,所有数据都按预期写入。
如果我删除这些日志记录,应用程序再次失败,并显示以前列出的错误消息。
我的问题是 - 任何人都可以解释为什么添加一些日志记录可能有这种副作用?它几乎看起来像添加一些日志记录,将数据写入日志记录表,减慢速度或以某种方式序列化触发器以正确的顺序触发的动作....
在此先感谢您提供的任何洞察:-)
的提示特里非常感谢。 – user3336885
非常感谢Terry的提示。事实证明,与PowerBuilder 12.5处理行计数有关的问题返回。由于与INSERT关联的一系列级联触发器会返回许多不同的行数。这些在PB 6.5中过滤出来,但在12.5中没有。设置RecheckRows DBParm解决了这个问题。 – user3336885