【发布时间】:2012-09-12 18:16:05
【问题描述】:
我有一个使用 SQLDependency 的应用程序。我想在插入新行时向用户显示插入到数据库表中的最新行。
当我的查询是一个简单的选择语句时,这可以按预期工作,但鉴于我想显示最近插入的行,我将查询编写为 SELECT TOP 语句。这导致了多个异常。在查看this 问题后,我了解到TOP 对 SQLDependency 无效,因此我将不得不寻找其他解决方案。
这让我想知道两件事:
A) SQLDependency 不支持TOP 表达式的原因是什么?
B) 我想出的解决方案是根据 id 对结果进行排序并只显示最后一个。这工作正常,但我的表目前只有很少的行。我正在使用数据集,因此我预计一旦插入更多行,它就会变慢 - 这就是为什么我想将查询限制为仅最近的行。有没有更好的方法来做到这一点?
【问题讨论】:
-
向他们展示插入的最后一行是否真的是您的目标(即使它是由其他人插入的)?通常您使用现有机制来执行此操作,例如
SCOPE_IDENTITY(). -
是的。这个应用程序所做的只是显示一些其他数据的计数。它使用“临时”表 - 另一个进程以特定间隔更新计数并将新行插入包含更新计数的“临时”表中。由于最后一行总是有最新的计数,这就是我要显示它的原因。
-
为什么不也(或替代地)用计数更新单行表?
-
这是我最初的想法,但我们决定保留特定时间计数的历史记录,因此向表中添加新行而不是更新一行。
-
你可以同时解决这个问题。虽然我不确定为什么这里不支持完全有效的 SQL。
标签: .net sql-server service-broker sqldependency