触发器:代替/用于插入,哪个会先触发?

问题描述 投票:0回答:2

我正在尝试理解存储过程和触发器的文档,其中它使用触发器插入和更新表。

他们给了我 2 个触发器文档,这个特定的表有两个触发器:

trig_table_ii 和 trig_table_ti。

  • trig_table_ii :代替插入
  • trig_table_ti:用于插入

表插入/更新时哪个会先触发?

在 trig_table_ii ( INSTEAD OF INSERT ) 中,同一个表有一个 INSERT 语句。这是否意味着 trig_table_ii 首先执行?

sql sql-server t-sql
2个回答
2
投票

更新表时不会触发任何事件。

FOR INSERT
AFTER INSERT
相同。完成插入记录后将触发此操作。

INSTEAD OF INSERT
将作为插入件的替代品进行射击。该触发器将忽略您原来的插入语句并执行要执行的任何内容。

让您在

INSTEAD OF
中说,出于某种原因,不要插入记录。因此,
FOR INSERT
触发器不会被触发。

查看此处了解更多信息:创建触发器


0
投票

trig_table_ii :而不是插入 -> 触发而不是执行 DML 语句(插入、更新和删除)的触发器是替代触发器。在您的情况下,将插入 DML。 trig_table_ti :用于插入 执行 DML 语句(插入、更新和删除)后触发的触发器是 After/For 触发器。在您的情况下,将插入 DML。

问题。哪个触发器将首先触发或首先触发? 回答。甚至在底层基表中进行更新(插入操作)之前,触发器也会被触发。 所以,肯定会首先触发而不是触发器。但是,这里有一个重要的问题。即使原始插入语句存在一些问题,触发器也不会执行创建触发器块内的语句。另一方面,After/For 触发器不会触发,因为如果原始插入无法正常工作,它将停止。

© www.soinside.com 2019 - 2024. All rights reserved.