2013-03-20 72 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

建议你有一个分离式的历史表,而不是使用触发器,每次当你做了更新,使用[更新...输出删除。*到历史表中]