【发布时间】:2016-02-07 23:44:43
【问题描述】:
我已通过编写 6.5 架构的脚本将 SQL Server 6.5 数据库升级到 SQL Server 2012,修复了此脚本中的所有语法问题,然后我使用此脚本创建了 2012 数据库。
同时我将前端应用程序从PowerBuilder 6升级到12.5。
当我在应用程序中执行某个操作时,它会将数据插入到给定的表中。此表有一个与 INSERT 操作关联的触发器,并且在此触发器中更新了其他表。这也会导致在这些表上触发额外的触发器。
PowerBuilder 应用程序最初报告以下错误:
在检索和更新之间行已更改。
没有对数据库进行任何更改。
现在我明白这条错误消息的含义了,但这才是真正“有趣”的地方!
为了了解触发器中发生的情况,我决定将数据从触发器中插入到日志表中,以便更好地了解事件流。这产生了一个相当意外的副作用 - PowerBuilder 应用程序不再报告任何错误,并且当我签入数据库时,所有数据都按预期写入。
如果我删除这些日志记录行,应用程序将再次失败并显示之前列出的错误消息。
我的问题是 - 谁能解释为什么添加一些记录行可能会产生这种副作用?这似乎是添加一些日志记录的行为,这些日志记录将数据写入日志记录表,减慢速度或以某种方式序列化触发器以按正确的顺序触发......
提前感谢您提供的任何见解:-)
【问题讨论】:
标签: sql-server triggers powerbuilder