当记录存在其他明智的插入使用触发器时如何更新日志表中的记录

时间:2015-06-05 18:41:17

标签: sql sql-server tsql

我有一张桌子

CREATE TABLE WIND (WindApp VARCHAR(10),Name VARCHAR(10),Isstatus CHAR(1))

INSERT INTO [mohan].[dbo].[wind]([WindApp] ,[Name],[ISStatus])
Select 'WP1000','Mohan','Y'

我的记录:

CREATE TABLE [dbo].[logtable](
    [App] [varchar](10) NULL,
    [Name] [varchar](10) NULL,
    [ISStatus] [char](1) NULL,
    [Dated] [datetime] NULL
) ON [PRIMARY]


**update wind set isstatus = 'N'** 

CREATE TRIGGER trgAfterUpdate ON [dbo].[wind] 
FOR UPDATE
AS

    declare @solarapp varchar(100);
    declare @name varchar(100);
    declare @isstatus varchar(1);

    select @solarapp=i.WindApp from inserted i; 
    select @name=i.name from inserted i;    
    select @isstatus=i.ISStatus from inserted i;    


    insert into logtable(App,name,ISStatus,Dated) 
    values(@solarapp,@name,@isstatus,getdate());

    PRINT 'AFTER UPDATE Trigger fired.'
GO

现在我已经创建了一个触发器After Update,它将在插入Wind表中的记录后插入到日志表中。但是 我想插入只有当它是新记录时才需要更新或删除以再次插入新记录

1 个答案:

答案 0 :(得分:0)

使用FOR INSERT,而不是触发器上的FOR UPDATE