我知道有很多关于类似问题的主题,但没有什么能让我前进。
我想通过触发器更新数据库2中的表,更新数据库1中相应表中的内容。它们具有相同的表结构。使用MS SQL 2008。
在AFTER INSERT触发器中执行此操作确实没有问题,就像
一样INSERT INTO DB2..Table1
SELECT *
FROM inserted
WHERE column1 = @column1
但是在做这个AFTER UPDATE风格的时候
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但我真的希望有一种更好的方法可以做到这一点,我没有想过。
答案 0 :(得分:0)
我怕你运气不好。进行更新的唯一方法是
set a.col1 = b.val1, a.col2 = b.val2....
可能有一个或两个DBMS有不同的语法选项,但这是标准。