自动将一个表与另一个表同步(列)
Posted
技术标签:
【中文标题】自动将一个表与另一个表同步(列)【英文标题】:Automatically sync one table with another table (columns) 【发布时间】:2016-04-18 13:11:14 【问题描述】:我正在使用 SQL Server 2014 Management Studio。我在我的应用程序上添加了一个删除功能,它将从 Table1 中删除一行。它会先将该行插入 Table2,然后从 Table1 中删除。
要获得 Table2 的 Table1 列的副本,我可以这样做:
SELECT * INTO Table2 FROM Table1
但是,有没有办法让 Table2 自动不断地从 Table1 中获取所有列?我问的原因是因为 Table1 将来会添加不同的列,因此必须手动将其复制到 Table2 中会很烦人。谢谢!
【问题讨论】:
你需要触发器来做到这一点,检查这个***.com/questions/9996643/…,当然你可能需要稍微修改一下代码,但这是你问题的解决方案 【参考方案1】:有几种方法可以做到这一点:
您可以使用触发器来捕获DELETE
操作
您可以修改DELETE
语句以使用OUTPUT
看起来像这样:
DELETE T1
OUTPUT DELETED.* INTO Table2
FROM Table1 AS T1;
因此,每当您从Table1
中删除某些内容时,这些记录都会添加到Table2
。
如果Table2
应该是一个存档表,它可能有一个ArchiveDate
列,那么你的语句可能会得到改进,看起来像这样:
DELETE T1
OUTPUT DELETED.*, CURRENT_TIMESTAMP INTO Table2
FROM Table1 AS T1;
当然我不建议在您的 SQL 查询中使用 *
并仔细列出您的列:
DELETE T1
OUTPUT DELETED.Column1, DELETED.Column2, DELETED.Column3, DELETED.Column4, CURRENT_TIMESTAMP
INTO Table2 (Column1, Column2, Column3, Column4, ArchiveDate)
FROM Table1 AS T1;
这样,您将能够知道该特定记录何时被删除。
【讨论】:
那是一个时髦的说法,不知道这是可能的 @Veljko89 现在你做到了! :) 谢谢!我会试试看。 @RockOn 如果Table2
应该是一个存档。您可能在那里有一个 ArchiveDate 列,然后您就会知道删除操作何时完成。我将在我的答案中添加迷你示例。以上是关于自动将一个表与另一个表同步(列)的主要内容,如果未能解决你的问题,请参考以下文章