Sql server 在SQL中使用主表中始终更新的数据创建复制表的最佳方法

Sql server 在SQL中使用主表中始终更新的数据创建复制表的最佳方法,sql-server,Sql Server,我有一个表a。我需要创建一个名为B的表的副本。当在a上执行任何插入、更新或删除操作时,同样需要在B上更新。我知道在触发器的帮助下这是可能的,我可以做到这一点,但这会影响性能吗。如果批量插入发生在表A中,它将通过触发器插入到B中,而不会影响性能。或者任何其他方式都是可能的。方向上的任何焦点都会有帮助。sql server触发器支持批量插入/更新/删除 您可以在表A上创建插入触发器,如下所示: CREATE TRIGGER A_INSERT ON A AFTER INSERT AS BEGIN

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

sql server触发器支持批量插入/更新/删除

您可以在表A上创建插入触发器,如下所示:

CREATE TRIGGER A_INSERT
ON A
AFTER  INSERT
AS
BEGIN
    INSERT INTO B
    SELECT * FROM INSERTED
END
假设表在列(和列顺序)方面是相同的

您可以对delete和update触发器应用相同的原则

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

为什么在同一实例(和数据库)上需要相同表的两个副本?这感觉像是一个。您试图解决的实际问题是什么?创建视图B作为选择*从A将符合您当前编写的问题陈述的字母。为什么您需要两组相同的数据?在这里使用视图是最好的解决方案,但就像其他人问你想解决什么问题一样?除了你之外,没有人知道如何在不完全了解你的需求和资源的情况下评估“最佳”。很多方法都是可能的,但我同意这听起来更像是一个XY问题。您似乎很关心性能—您是否知道是否存在问题,或者您是否过早地进行了优化?但是没有什么是免费的——如果没有一种几乎无痛的方法,比如一种观点,那么保持信息同步将是有代价的。我建议在这里要小心。如果
A
B
的定义发生变化,而另一个定义没有变化,则任何
插入
都将失败。如果您确实这样做,最好明确定义
INSERT
SELECT
子句中的列。