通过触发保持历史在asp.net

通过触发保持历史在asp.net

问题描述:

可能重复:
SQL Server history table - populate through SP or Trigger?通过触发保持历史在asp.net

我用这触发

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) 

,但我想告诉另一页历史.it在同一页上显示历史记录

+0

为什么LInq,asp.net,c#标签?有关这些标签的任何提及? – 2012-02-22 12:59:55

+1

您无法在'ASP.NET'中使用数据库触发器 – MatBailie 2012-02-22 13:01:28

+0

对不起,但我不明白你想要什么。请谨慎解释一下,而不是仅仅粘贴代码? =( – Gaspa79 2012-02-22 14:17:10

给你贴本的其他问题:

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

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

希望这有助于

+1

)编写触发器以确保处理多记录插入/更新/删除也很重要。实际上,任何将服务器插入或删除结果设置为标量变量的SQL服务器触发器都不会正常工作,因为这些表可以有多条记录 – HLGEM 2012-02-22 14:59:23

+0

完全正确!这就是为什么我说我会以不同的方式做触发器,整个“选择ID”的事情并没有说服我。 – Gaspa79 2012-02-22 15:02:57