Sql server 仅当值为FALSE时运行触发器

Sql server 仅当值为FALSE时运行触发器,sql-server,Sql Server,经过反复试验,在您的帮助下,我为我的触发器编写了以下代码: ALTER TRIGGER [dbo].[SnapChapas] ON [dbo].[Tab_Inventarios_Chapas] AFTER UPDATE AS BEGIN SET NOCOUNT ON; IF UPDATE(Ativo) DECLARE @IDInventario as INT SET @IDInventario = (SELECT ID FROM insert

经过反复试验,在您的帮助下,我为我的触发器编写了以下代码:

ALTER TRIGGER   [dbo].[SnapChapas] 
ON              [dbo].[Tab_Inventarios_Chapas] 
AFTER UPDATE
AS 
BEGIN
  SET NOCOUNT ON;

  IF UPDATE(Ativo)
  DECLARE @IDInventario as INT
  SET @IDInventario = (SELECT ID FROM inserted)

  INSERT 
  INTO          Tab_Inventarios_Chapas_Snap_Banco
  (             ID_Tab_Chapas,
                FormatoL,
                Comprimento1,
                Comprimento2,
                Largura1,
                Largura2,
                Quantidade,
                ID_Tab_Inventarios_Chapas
  )
  SELECT        ID,
                FormatoL,
                Comprimento1,
                Comprimento2,
                Largura1,
                Largura2,
                Quantidade,
                @IDInventario
  FROM          Tab_Chapas
上面的代码正在运行。我的问题是:我在
[dbo].[Tab\u Inventarios\u Chapas]
中有一个名为
“ACTIVE”的列。我只需要在更新值为
FALSE
时运行触发器


注意:我的申请一次只更新一行;无法更新多个版本。

多亏了@jeroenmoster,我才能找到答案

这是我的最终代码:

    ALTER TRIGGER [dbo].[SnapChapas] 
       ON  [dbo].[Tab_Inventarios_Chapas] 
   AFTER UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

Declare @ativo as bit
Set @ativo = (select Ativo from inserted)
if UPDATE(Ativo) and @ativo='False'
declare @IDInventario as int
Set @IDInventario = (select ID from inserted)
insert into Tab_Inventarios_Chapas_Snap_Banco (ID_Tab_Chapas,FormatoL,Comprimento1,Comprimento2,Largura1,Largura2,Quantidade,ID_Tab_Inventarios_Chapas)
select ID,FormatoL,Comprimento1,Comprimento2,Largura1,Largura2,Quantidade,@IDInventario
from Tab_Chapas

END

谢谢大家!

“有人能帮我扳机吗?”这不是我们能回答的问题;这只是一个简单的“是”或“不是”的答案,实际上对你没有帮助。相反,请向我们展示您迄今为止所写的内容,并解释它不起作用的原因。给我们一些示例数据(如DDL和DML语句)和预期结果,这样我们就可以了解您的工作方向。然后我们解释你的尝试失败的原因,让你回到正确的道路上。我同意@Larnu尝试从样本表中发布至少一个样本,如果你不想发布私人内容,则触发。否则,只有当有人能够与myreries和wondersome powers合作,并且这些人通常不会在StackOverflow周围闲逛时,才能提供帮助:-(大家好,为问题的糟糕方式感到抱歉…尝试做得更好:更改了问题对涉及的行的当前/以前版本使用插入的
和删除的
伪表,并且您可以使用
IF UPDATE(Active)
测试该列是否参与更新(但不是实际的变化;因此你需要加入表格)。@Jeroenmoster,谢谢你的帮助,我会尝试改变然后回来