2013-07-24 38 views
3

在我的SQL数据库中,我有一个包含特定数据的视图,用于报告内容。为了归档目的,我想自动将该视图保存为表格。我创建了一个表自动将视图保存为带有额外列的表格

SELECT * INTO t_ReportArchive FROM v_View 
(Table = t_ReportArchive; View = v_View) 

所以表很好。视图和表格的列在任何时候都不会改变,只是数据正在更新。我对SQL非常陌生,我的问题是:是否可以运行脚本或者使用该视图中的新数据自动更新表?像Update t_ReportArchive from v_View

+1

当您说“自动”时,您是否希望将其设置在计时器上以每天,每小时更新一次?在这种情况下,您应该研究创建存储过程和作业。 – tkendrick20

+0

创建一个存储的过程并将其设置为服务器作业 –

回答

0

好,你正在使用的查询创建表,并插入到表中,所以它只能是使用一次。你可以在第一时间手动运行创建表馍随后你可以使用一个简单的插入,如:

insert into t_ReportArchive select * FROM v_View 

另外,您可以创建一个新表,每一天,备份运行,并有日期附加到表如下:

declare @backupquery varchar(100) = 'select * into t_ReportArchive'+ REPLACE(CAST(CAST(CURRENT_TIMESTAMP AS DATE) AS VARCHAR(10)),'-','_')+ ' from v_View' 
exec (@backupquery) 
0

当您从表中插入/更新/删除并从那里运行SQL时,可以使用触发器运行。

http://msdn.microsoft.com/en-us/library/ms189799.aspx

我个人不喜欢触发器,因为它很难保持跋涉上发生了什么。预定工作也是如此。

我更喜欢每当发生更改时从代码中调用更新。

相关问题