SQL Server 视图插入更新

Posted

技术标签:

【中文标题】SQL Server 视图插入更新【英文标题】:SQL Server Views insert update 【发布时间】:2015-06-25 12:37:34 【问题描述】:

我在 SQL Server 中有一个表,我想使用视图将其插入/更新到另一个表中。

表 A 是源表,表 B 是目标。我想带来所有新记录和任何已更新的记录。这是否可能使用视图,如果可以,如何?

创建视图集成为 从 Table_A 中选择 *

上面会给我所有的记录,这很好,但我不想每天都把桌子拿过来,我想围绕 B 表设计逻辑。我只想要新的和/或已更新的记录。表 A 没有创建日期。表结构如下所示。

人员、地点、付款人

鲍勃,2A,马

【问题讨论】:

您如何定义“新的或已更新的”?该定义可以作为WHERE 子句包含在您的视图中。 嗯,正确。在表 A 上没有创建日期。它提供诸如 ID、姓名、位置等信息。 如果您能在那边提供一些详细的逻辑和一些示例数据,那将有助于我们为您提供帮助。 我更新了我的问题以提供尽可能详细的信息。 不确定我是否完全理解您想要实现的目标。表 A 和 B 是具有相同结构的两个分开的表?您想准时填写表 B 吗? 【参考方案1】:

我不确定你想要达到什么目的或为什么。

Table_B 肯定是 Table_A,因为 Table_A 包含所有已创建(即“新”)或更新的记录。

如果 Table_A 上有一个时间戳,其中包含每条记录的创建或更新日期,并且您只希望在某个时间戳之后创建或更新记录,您可以创建一个视图来执行此操作。如果您希望视图中的数据前滚,您甚至可以使用当前服务器时间减去一些任意数字。

您需要包含更多关于 Table_A 内容的信息以及您希望视图中的数据将实现什么以获得更简洁的答案。

【讨论】:

很遗憾,该表没有创建/修改日期,并且是供应商表。这是我的第一个想法。我的第二个是触发器,但它是一个托管包。 您到底想达到什么目的?如果它是如此记录表的更改,以便您可以看到更改的快照,那么您可能想要添加一个触发器来记录更新并插入到某种见证表,但是如果表上有很多事务,则此日志可能很快就变大了。 如果我能找到创建日期和修改日期,视图会是什么样子。 SELECT * FROM Table_A WHERE LastModifiedDate > '2014-12-31 23:59:59' 将带回今年的所有内容。使用 GET_DATE() 命令可以让您修改它,使其随系统日期滚动

以上是关于SQL Server 视图插入更新的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 视图何时更新?

为啥要插入到 SQL Server 中的视图中? [关闭]

SQL Server 插入透视视图

如何在 SQL Server 2005 中进行更新插入(更新或插入)

Sql Server 2005 - 插入更新触发器 - 获取更新,插入行

在 SQL Server 视图中插入重复行