我找到了很多关于触发器失败时会发生什么的信息,但无法找到任何关于事务失败时会发生什么的信息。
假设我有两个表,表 A 和表 B。我已经定义了一个 BEFORE INSERT 触发器,这样表 A 上的插入将导致触发器更新表 B。我知道如果触发器失败,插入事务将不会执行。当触发器成功执行然后插入失败时会发生什么?表 B 上的更新会回滚吗?
更进一步,假设我还定义了表 C 和 BEFORE UPDATE 触发器,这样对表 B 的更新将导致触发器更新表 C。当一切正常时,预期的行为是当插入一行时进入表A,触发器将更新表B,这将导致另一个触发器更新表C。由于两者都是BEFORE触发器,因此这些操作将反向执行,因为在表C将首先更新,然后B,然后插入将在 A 上执行。当 A 上的插入失败时会发生什么?B 和 C 上的更新会回滚吗?