[英]SQLite Insert trigger how to delete old records in the table based on two values
[英]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
您應該注意的幾個問題
SELECT INTO <table name>
將創建新表並插入結果。 它只會工作一次。 然后第二次運行它,因為目標表已經存在,它將給出錯誤。 您應該使用預先創建的所有必要表,並使用insert into backup_table ( <column list> ) select <column list> from original_table
避免使用SELECT *
,最好的做法是顯式指定列名
如果必須使用Dynamic SQL,請閱讀有關它的更多信息。 示例: 動態SQL的詛咒和祝福 。 並注意可能的SQL注入攻擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.