【问题标题】:MSSql Trigger on Update Insert (Updatecounter)更新插入 (Updatecounter) 上的 MSSql 触发器
【发布时间】:2013-04-09 07:26:42
【问题描述】:

我有一个名为 Table1 的表,其中包含两个字段 Systemname 和 Updatecount。 系统名称为“SAP”的每个插入都应将 Updatecount 设置为 1(初始值)。 如果 Field Systemname 使用定义的值“SAP”获得更新,则 Field Updatecount 应增加 1。

如何定义触发器?

【问题讨论】:

    标签: sql-server triggers


    【解决方案1】:
    create trigger tr on Table1 for insert,update
    as
    begin
        if update(Systemname)
            update Table1
                set UpdateCount = (case when not exists(select * from deleted) then 1 else UpdateCount + 1 end)
            from Table1
            inner join inserted on Table1.[<YourPKField>] = inserted.[<YourPKField>]
            where inserted.Systemname = 'SAP'
    end
    GO
    

    【讨论】:

      【解决方案2】:

      这里有一篇关于触发器的好文章:

      http://www.codeproject.com/Articles/38808/Overview-of-SQL-Server-database-Triggers

      你需要创建:

      CREATE TRIGGER [TRIGGER_ALTER_COUNT] ON [dbo].[tblTriggerExample] 
      FOR INSERT, UPDATE
      AS
      BEGIN
       DECLARE @Var INT 
       SELECT @Var = COUNT(*) FROM INSERTED
       UPDATE [dbo].[tblTriggerExample] SET AlterCount = AlterCount + Var  
                ,LastUpdate = GETDATE()
          WHERE TransactionID = @TransID
       SELECT @Var = COUNT(*) FROM UPDATED WHERE SystemNAme = 'Var'
       UPDATE [dbo].[tblTriggerExample] SET AlterCount = AlterCount + @Var
                ,LastUpdate = GETDATE()
          WHERE TransactionID = @TransID
      END
      

      【讨论】:

      • 感谢您链接文章。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2016-10-13
      相关资源
      最近更新 更多