2013-03-20 102 views
0

我有一個enquiry details表,在這個用戶需要更新他們的狀態爲特定的查詢。如果我使用update語句,它將覆蓋以前的狀態更新。SQL更新查詢,爲相同的記錄創建歷史記錄

我需要的是

sno  confname   region  enquiry status update date of update 
1  Vision 2020 Madhya Pradesh test have to follow  16/03/2013 
               next week  
1  Vision 2020 Madhya Pradesh test Confirmed the 
               product. Product 20/03/2013 
               to be deliver.  

但現在我得到的是

sno  confname   region  enquiry status update date of update 
1  Vision 2020 Madhya Pradesh test Confirmed the 
               product. Product 20/03/2013 
               to be deliver.  

我需要獲得特定查詢的歷史..

我將不勝感激您的輸入和幫幫我。

+0

我確實建議你創建一個新的表格,其中保存了所有的歷史記錄。現在你的'sno'可能是你的'主鍵',在這種情況下你想要達到的是不可能的。 – 2013-03-20 05:36:15

+0

我也有每個查詢的時間戳字段.. – Affan 2013-03-20 05:38:10

+0

多數民衆贊成在所有...你會得到所有的領域,你想...你可以創建一個類似的表結構在你的數據庫...或在我anmswer我也會顯示你如何複製同一張表。 – 2013-03-20 05:50:07

回答

0

這就是你如何實現你想要的。使用TRIGGER

CREATE TRIGGER trigg_TriggerName 
ON yourFIRSTTableName 
AFTER UPDATE 
AS 

INSERT INTO yourSECONDTableName 
    SELECT * FROM DELETED 

只要創建一個這樣的trigger。因此,無論何時在父表上執行update,您的第二個表都將爲inserted,其父表中的舊記錄將爲inserted

另外,如果你想了解更多關於什麼DELETED是,更多地瞭解MAGIC TABLES這裏

0

建議你有一個分離式的歷史表,而不是使用觸發器,每次當你做了更新,使用[更新...輸出刪除。*到歷史表中]