【发布时间】:2014-01-16 15:07:16
【问题描述】:
我知道有很多关于类似问题的帖子,但没有什么能真正让我前进。
我想通过触发器使用数据库 1 中相应表中的更新内容来更新数据库 2 中的表。它们具有相同的表结构。使用 MS SQL 2008。
在 AFTER INSERT 触发器中执行此操作确实没有问题,就像
INSERT INTO DB2..Table1
SELECT *
FROM inserted
WHERE column1 = @column1
但是在更新后样式时这样做
UPDATE DB2..Table1
SET column2 = @column2 --etcetera in some way
FROM DB1..Table1
WHERE column1 = @column1 --or something not important
有 100 多个列以及对表列的更改/添加(尽管 DB1..Table1 和 DB2..Table1 将始终具有相同的结构和列),因此为要更新的每一列设置一个值感觉是一个非常糟糕的选择。
我真正想写的是:
UPDATE DB2..Table1
SET DB2..Table1 = (SELECT * FROM inserted WHERE column1 = @column1) alternatively DB2..Table1 = DB1..Table1
WHERE column1 = @column1
此外,我必须为 100 多列中的 3 列设置固定值。这三列将是 DB1 表和 DB2 表之间的唯一区别。插入新行时这也很好,但让我想知道在更新的情况下我应该如何做到这一点。
有什么想法吗?
与此类似的问题:Update multiple columns in SQL 但我真的希望有一种我没有想到的更好的方法。
【问题讨论】:
标签: sql sql-server-2008 triggers multiple-columns