web-services - SQL 触发器可以调用 Web 服务吗?

标签 web-services sql-server-2005 rest triggers

我正在为 iPhone 应用程序构建一个 RESTful API。

当用户“ checkin ”[将新行插入表中]时,我想从该插入中获取数据并调用 Web 服务,该服务将根据该插入发送推送通知。

我能想到的唯一方法是通过 trigger ,或者有实际的插入方法,插入成功后,调用Web服务。这对我来说似乎是个坏主意。

想知道您是否对此有任何想法,或者是否有我没有想到的更好的方法。

最佳答案

即使在技术上可以,这也不是一个好主意!触发器应该非常精简,并且绝对不应该涉及冗长的操作(Web 服务调用肯定是这样)!重新考虑你的架构——应该有更好的方法来做到这一点!

我的建议是将“注意”您需要在触发器中调用 Web 服务的任务与该 Web 服务调用的实际执行分开。

就像是:

  • 在您的触发代码中,将“稍后调用 Web 服务”插入到表中(只是 INSERT 以保持精简和快速 - 仅此而已)
  • 有一个异步服务(SQL 作业,或者最好是 Windows NT 服务),它使这些调用与实际触发器执行分开,并将从该 Web 服务检索到的任何数据存储到数据库中的适当表中。

  • 触发器是一个非常挑剔的东西 - 它应该总是非常快速、非常精简 - 执行 INSERT最多或两个 - 并且一定要避免在触发器中使用光标或其他冗长的操作(如 Web 服务调用)

    Brent Ozar 在 The Top 10 Developer Mistakes That Don't Scale 上进行了精彩的网络广播(在 SQL PASS 上呈现)而触发器是他关注的第一件事!强烈推荐

    关于web-services - SQL 触发器可以调用 Web 服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153330/

    相关文章:

    web-services - 关于不使用 HTTP 的 Web 服务的建议

    sql-server - 大量的 SQL Server 内存使用会导致错误吗?

    json - 如何将漂亮的 JSON 放入 REST api 中

    REST API CURL - 不是 SSL 加密 - 安全吗?

    android - 当我从我的 Android 应用程序进行 Web 服务调用时,如何找到传输的数据量?

    android - Android数据库同步

    sql - 如何在复杂的 SQL Server 查询中找到匹配的 BEGIN END 对?

    ASP.NET SQL 查询

    c# - 如何使用 Visual Studio 验证 swagger Rest API

    python - 创建 Web 服务最佳实践