解决 SQL Server 触发器内的 OUTPUT 子句限制
SQL Server 对在 OUTPUT
语句中与触发器一起使用 UPDATE
子句的限制(导致错误 334)可以被规避。
有效的解决方法:
推荐的解决方案涉及用 UPDATE
替换单个 OUTPUT
语句,分两步过程:SELECT
后跟 UPDATE
。
<code class="language-sql">-- Fetch the original data before the update SELECT BatchFileXml, ResponseFileXml, ProcessedDate FROM BatchReports WHERE BatchReports.BatchReportGUID = @someGuid; -- Execute the update operation UPDATE BatchReports SET IsProcessed = 1 WHERE BatchReports.BatchReportGUID = @someGuid;</code>
重要提示:
OUTPUT
检索数据会对性能产生负面影响,特别是在行大小很大的表中。OUTPUT
获取的数据可能并不总是与触发器执行后的最终表状态匹配。 触发器修改行或时间戳列可能会导致这种差异。OUTPUT
并使用单独的 SELECT
和 UPDATE
语句以获得可靠的结果。Microsoft 可能会在未来的 SQL Server 更新中解决此 OUTPUT
子句限制。
以上是如何使用触发器解决 SQL Server 的 OUTPUT 子句错误?的详细内容。更多信息请关注PHP中文网其他相关文章!