2012-02-22 101 views
-3

可能重複:
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

回答

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

它的短,所以請閱讀。此外,下次請嘗試更好地解釋一些事情,這樣每個人都可以理解。我知道你可能有語言障礙,但沒關係。只要盡力而爲,我來自阿根廷,我可以向你保證:如果你一直在努力,最終你會學習英語。

希望這有助於

+1

)編寫觸發器以確保處理多記錄插入/更新/刪除也很重要。實際上,任何將服務器插入或刪除結果設置爲標量變量的SQL服務器觸發器都不會正常工作,因爲這些表可以有多條記錄 – HLGEM 2012-02-22 14:59:23

+0

完全正確!這就是爲什麼我說我會以不同的方式做觸發器,整個「選擇ID」的事情並沒有說服我。 – Gaspa79 2012-02-22 15:02:57