通过asp.net中的触发器维护历史记录

时间:2012-02-22 12:52:49

标签: sql-server triggers

  

可能重复:
  SQL Server history table - populate through SP or Trigger?

我正在使用此触发器

CREATE TRIGGER [dbo].[Band_Level_trg] 
-- ALTER TRIGGER [dbo].[Test_PTA_Table_Update_trg] 
   ON  [dbo].[Band_Level] 
   INSTEAD OF UPDATE
AS 
   SET NOCOUNT ON
   DECLARE @key int
   SET @key = (SELECT band_level_id FROM Inserted)

   UPDATE Band_Level
      SET band_level_name = band_level_name, description = description
      WHERE band_level_id = @key 

   INSERT INTO dbo.Band_Level
   (band_level_name, description)
   (SELECT band_level_name,description 
      FROM Inserted) 

但我想在另一个页面上显示历史记录。它在同一页面上显示历史记录

1 个答案:

答案 0 :(得分:1)

鉴于您发布的另一个问题:

maintain history through trigger in asp.net (遗憾地说,也是可怕的解释)

我想我想出你想做什么。您希望使用此触发器保留更改的“历史记录”。另外,我认为,你是“在同一页面中显示历史记录”,因为触发器插入到你正在更新的同一个表格上! 历史的目的是在另一张桌子上进行,如果没有,你的历史将成为你想保留历史的桌子的实际数据。

您应该创建具有相同列的另一个表并相应地更改触发器。只需创建一个Band_Level_History表并更改触发器以保存更改。而已。像这样:

而不是:

INSERT INTO dbo.Band_Level

把:

INSERT INTO dbo.Band_Level_History

另外,我会以不同的方式重构触发器。你应该真的阅读这篇文章:

http://www.4guysfromrolla.com/webtech/091901-1.shtml

它很短,请阅读。另外,下次请尝试更好地解释一下,以便每个人都能理解。我知道你可能有语言障碍,但没关系。试着尽力而为,我来自阿根廷,我可以向你保证:如果你一直在尝试,你最终会学习英语。

希望这有帮助