【问题标题】:Automatically save view as table with extra column自动将视图另存为带有额外列的表
【发布时间】:2013-07-24 13:06:19
【问题描述】:

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

创建了表
SELECT * INTO t_ReportArchive FROM v_View
(Table = t_ReportArchive; View = v_View)

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

【问题讨论】:

  • 当您说“自动”时,您是否希望将其设置为每天、每小时等更新的计时器?在这种情况下,您应该考虑创建存储过程和作业。
  • 创建存储过程并将其设置为服务器作业

标签: sql view automation


【解决方案1】:

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

请参考以下链接

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

问候

阿舒托什·艾莉亚

【讨论】:

    【解决方案2】:

    您正在使用的查询会创建表并插入到表中,因此它只能使用一次。您可以在第一次手动运行以创建表包,随后您可以使用简单的插入,例如:

    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)
    

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 2017-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多