在 SQL 服务器中执行存储过程和触发器

The execution of stored procedure and triggers in SQL Server

假设我在SQL服务器数据库中有以下情况。

这些是数据库中的表:

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

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

现在,sp1 是这样工作的:

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

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

我想了解处理流程的工作原理。

是否有并行性?

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

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

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

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

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