【问题标题】:The execution of stored procedure and triggers in SQL ServerSQL Server 中存储过程和触发器的执行
【发布时间】:2019-03-25 14:18:07
【问题描述】:

假设我在 SQL Server 数据库中有以下情况。

这些是数据库中的表:

  1. 表1
  2. 表2
    • 关联触发器:插入时触发器 (trigger1)
  3. 表3

数据库包含一个存储过程sp1(带参数)。

现在,sp1 是这样工作的:

  1. sp1 正在 2 秒内从 Table1 收集一些行
  2. 根据这些行的值,可能某些行会被插入到 table2(插入需要 1 秒),当然插入会导致 trigger1 触发
  3. trigger1Table3 中插入或更新一些行(需要多花 2 秒)
  4. sp1在步骤1-3之后还没有完成,它继续工作2秒处理然后完成

假设有一个应用程序(例如 Java、C# 或其他)连续调用 sp1 100 次(调用比执行 sp1 快得多)。

我想了解处理流程是如何工作的。

有没有并行性?

sp1 是否等待trigger1 完成后再继续第 4 步?

从应用程序调用sp1 时,是否每次调用都必须等待才能继续下一次调用?

【问题讨论】:

  • 您在这里提出了 3 个不同的问题。请记住,规则是每个帖子一个问题。顺便说一句,你可以设置一个演示并在比你发布这篇文章后的 1 小时内测试所有这些......
  • @ZoharPeled,我认为这三个问题是相关的。我可以将它们结合起来提出一个问题,但这并不容易理解。我正在设置一个演示来了解自己,如果我这样做了,当然我会在这里分享知识让大家知道。

标签: sql sql-server stored-procedures relational-database database-trigger


【解决方案1】:

我做了一个演示来测试这种情况,这是我发现的:

1- sp1 在继续其余处理之前总是等待触发器。

2- 从应用程序调用 sp1 将等待执行完成,除非调用是异步的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多