簡體   English   中英

觸發從活動表中刪除舊記錄並插入到歷史表中

[英]Trigger To delete Old Records from active table and Insert to history table

SQL Server 2008中

願任何人分享他們的專業知識如何實現以下方案

我有兩個桌子。 活動和歷史都具有相同的結構。

我試圖實現的目標是,每當新記錄插入到活動表中時,活動表中存在的任何記錄都會移到歷史記錄中。

我正在嘗試僅保留當前活動記錄

我有一列稱為獲取日期,如果有記錄具有與獲取日期不同的獲取日期,則必須將其移至歷史記錄表。 這些記錄不應出現在活動表中。

謝謝

你那里有幾個語法錯誤。

我只是在糾正語法

CREATE PROCEDURE BACKUP_TB 
    @tbname varchar(MAX) 
AS 
 BEGIN 
    SET nocount ON; 
    DECLARE @query varchar(MAX) 
    SET @query = 'select * into '+ @tbname + '_backup from ' + @tbname + ''; 
    EXEC (@query) 
    SET nocount OFF; 
END 

您應該注意的幾個問題

  1. SELECT INTO <table name>將創建新表並插入結果。 它只會工作一次。 然后第二次運行它,因為目標表已經存在,它將給出錯誤。 您應該使用預先創建的所有必要表,並使用insert into backup_table ( <column list> ) select <column list> from original_table

  2. 避免使用SELECT * ,最好的做法是顯式指定列名

  3. 如果必須使用Dynamic SQL,請閱讀有關它的更多信息。 示例: 動態SQL的詛咒和祝福 並注意可能的SQL注入攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM