首页 > 解决方案 > 在 SQL 中使用主表中始终更新的数据创建副本表的最佳方法

问题描述

我有一个表 A。我需要创建一个名为 B 的 A 的副本。当在 A 上执行任何插入、更新或删除操作时,同样需要在 B 上更新。我知道借助触发器和我可以这样做,但它会影响性能。如果表A中发生批量插入,是否会通过触发器将其插入B而不影响性能。或者任何其他方式都是可能的。方向上的任何关注都会有所帮助。

标签: sql-server

解决方案


支持批量 INSERT/UPDATE/DELETE 的 sql-server 触发器。

您可以像这样在表 A 上创建 INSERT 触发器:

CREATE TRIGGER A_INSERT
ON A
AFTER  INSERT
AS
BEGIN
    INSERT INTO B
    SELECT * FROM INSERTED
END

假设您的表在列(和列顺序)方面是相同的,

您可以对删除和更新触发器应用相同的原则。

** 请记住它对性能有一些影响,但如果 B 没有任何约束、外键等 - 性能应该不会受到太大影响


推荐阅读