如果该列不存在,则首先创建该列:
ALTER TABLE database2..targetTable
ADD targetColumn int null -- or whatever column definition is needed
由于您使用的是 Sql Server 2005,因此您可以使用新的MERGE语句。
MERGE语句的优点是能够在一个语句中处理所有情况,例如源中丢失的行(可以执行插入)、目标中的丢失行(可以执行删除)、匹配的行(可以执行更新),并且一切都以原子方式完成在单笔交易中。例子:
MERGE database2..targetTable AS t
USING (SELECT sourceColumn FROM sourceDatabase1..sourceTable) as s
ON t.PrimaryKeyCol = s.PrimaryKeyCol -- or whatever the match should be bassed on
WHEN MATCHED THEN
UPDATE SET t.targetColumn = s.sourceColumn
WHEN NOT MATCHED THEN
INSERT (targetColumn, [other columns ...]) VALUES (s.sourceColumn, [other values ..])
引入 MERGE 语句是为了解决像你这样的情况,我建议使用它,它比使用多个 sql 批处理语句的解决方案强大得多,这些语句基本上完成了 MERGE 在一个语句中所做的事情,而不会增加复杂性。