Sql server 2008 SQL Server触发器插入和更新操作不工作?

Sql server 2008 SQL Server触发器插入和更新操作不工作?,sql-server-2008,triggers,Sql Server 2008,Triggers,我正在使用SQLServer2008。我的触发器如下所示。我在两个表中插入了我没有得到任何更新的值 CREATE TRIGGER trgAfterInserta ON AMS_33.dbo.access_event_logs AFTER INSERT,UPDATE AS declare @idams bigint; declare @id int; declare @uid nvarchar(20);

我正在使用SQLServer2008。我的触发器如下所示。我在两个表中插入了我没有得到任何更新的值

 CREATE TRIGGER trgAfterInserta ON AMS_33.dbo.access_event_logs
 AFTER INSERT,UPDATE 
 AS           
        declare @idams bigint;  
        declare @id int; 
        declare @uid nvarchar(20);
        declare @tentry datetime;
        declare @tsn nvarchar(20);
        declare @evtid nvarchar(20);
        declare @audit_action nvarchar(300);

select @idams   = i.id from inserted i;
select @id      =  max(Rownumber) + 1   from   TAV3.dbo.access_event_logs ;  
select @uid    =i.USERID from inserted i;   
select @tentry =i.TIMESTAMPS from inserted i;   
select @tsn   =i.TERMINALSN from inserted i;
select @evtid =i.EVENTID from inserted i;
set    @audit_action='Inserted Record -- After Insert.';
set    @tentry = dateadd(hh,3,@tentry); 


insert into TAV3.dbo.access_event_logs 
(Rownumber,Userid, Timeentry, Eventid, Terminalsn, Notes)
 values(@id,@uid, @tentry, @evtid, @tsn, @audit_action);

update AMS_33.dbo.access_event_logs set Calculated=1 where id= @idams;  

表1 AMS_33.dbo.access_事件日志

  id    bigint  Unchecked
  USERID    nvarchar(50)    Unchecked
  DEPARTMENT    nvarchar(50)    Unchecked
  TIMESTAMPS    datetime    Unchecked
  EVENTID   nvarchar(50)    Unchecked
  TERMINALSN    nvarchar(50)    Unchecked
  ACCESSMETHOD  nvarchar(255)   Unchecked
  REMARKS   nvarchar(255)   Unchecked
  TERMINALIP    nvarchar(50)    Unchecked
  PHOTO image   Checked
  PHOTOSIZE int Unchecked
  RECLOGDTM datetime    Unchecked
  RECLOGFROMIP  nvarchar(50)    Unchecked
  LOCALTIMESTAMP    datetime    Unchecked
  PhotoPath nvarchar(50)    Checked
  Calculated    int Checked
表2 TAV3.dbo.access\u事件日志

Rownumber   int Unchecked
Userid  nvarchar(20)    Unchecked
Timeentry   datetime    Unchecked
Eventid nvarchar(20)    Checked
Terminalsn  nvarchar(20)    Unchecked
Calculated  int Checked
Notes   nvarchar(300)   Checked

这里没有执行插入或更新吗

您假设在以下语句中只插入或更新了一行 从插入的i中选择@idams=i.id


这可能是错误的。然后,这些语句将永远不会到达insert(插入)

假设在以下语句中只插入或更新了一行 从插入的i中选择@idams=i.id


这可能是错误的。然后,这些语句将永远无法到达insert(插入)

1)您假设只插入或更新了一行,这可能是错误的。如果我正确读取了您的代码,您将由此创建一个循环?!您在该表上有一个更新,其中有一个触发器,您的触发器将再次更新该表。您是否收到任何错误?1)您假设只插入或更新了一行,这可能是错误的。如果我正确读取您的代码,您将由此创建一个循环?!您在该表上有一个更新,其中有一个触发器,您的触发器将再次更新该表。是否有任何错误?请使用select,即insert(字段a,字段B)将inserted.foo作为字段a,inserted.bar作为字段B从inserted中选择insert.foo作为字段a,inserted.bar作为字段B,而不是使用insert上的value子句,即insert(字段a,字段B)从inserted中选择inserted.foo作为字段a,inserted.bar作为字段B