Вставить, если не существует, обновить - n Количество столбцов Обновление оператора Упрощение - PullRequest
0 голосов
/ 16 мая 2011

Этот вопрос является продолжением существующего вопроса здесь .

Мне нужно сравнить две одинаковые таблицы в двух базах данных на одном экземпляре и обновить данные, если запись существует, и вставить, если нет. Я планирую использовать слияние в качестве ответа на поставленный выше вопрос.

Но я хочу знать, существует ли какое-либо простое решение для обновления всей таблицы другой таблицей без записи всех столбцов в операторе SET в запросе UPDATE.

Я имею в виду, я не хочу писать SET t1.col1 = t2.col2, t1.col2 = t2.col2 и т. Д.

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Замените YourTableName name на любое имя вашей таблицы, скопируйте результат в оператор слияния и удалите последнюю запятую.

declare @S varchar(max)
set @S = 'SET '

select @S = @S + 'T1.'+name+'=T2.'+name+', '
from sys.columns
where object_name(object_id) = 'YourTableName'
order by column_id

select @S
1 голос
/ 16 мая 2011

Нет простого способа сделать это, кроме динамического создания запроса и его динамического выполнения, оба из которых - чистое зло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...