3

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

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

所以桌子很好。视图和表的列在任何时候都不会改变,只是数据在更新。我对 SQL 真的很陌生,我的问题是:是否可以运行脚本或其他东西来使用该视图中的新数据自动更新表?像Update t_ReportArchive from v_View什么?

4

3 回答 3

0

您可以在 Jobs 中安排此查询,这可以按照您想要的频率来完成,每小时、每周、每月。

请参考以下链接

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

问候

阿舒托什·艾莉亚

于 2013-07-24T13:43:36.707 回答
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)
于 2013-07-24T13:45:50.723 回答
0

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

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

就我个人而言,我不喜欢触发器,因为很难继续了解正在发生的事情。对于预定的作业也是如此。

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

于 2013-07-24T13:45:59.777 回答