Просто Scenarion, может быть, это поможет вам понять, что gordatron и я говорил о том:
следующей ситуации: Там приведена таблица «Продукты» которым является центральным местом для хранения информации о продукте и таблицу «Обновленные продукты», структура которой выглядит точно так же, как и таблица «Продукты», но данные могут отличаться. Подумайте о следующем сценарии: вы экспортируете таблицу продуктов, чтобы преуспеть по утрам. весь день вы удаляете, добавляете, обновляете продукты в своей таблице excel. В конце дня вы хотите повторно импортировать данные excel в таблицу «Продукты». Что вам нужно:
- удалить все записи из «UpdatedProducts»
- вставки данных из Excel в «UpdatedProducts» (насыпная вставки, если это возможно)
- обновления «Продукты» стол
Затем заявление о слиянии может выглядеть так:
MERGE Products AS TARGET
USING UpdatedProducts AS SOURCE
ON TARGET.ProductID = SOURCE.ProductID
WHEN MATCHED AND TARGET.ProductName <> SOURCE.ProductName OR TARGET.Rate <> SOURCE.Rate
THEN UPDATE SET TARGET.ProductName = SOURCE.ProductName,
TARGET.Rate = SOURCE.Rate
WHEN NOT MATCHED BY TARGET
THEN INSERT (ProductID, ProductName, Rate)
VALUES (SOURCE.ProductID, SOURCE.ProductName, SOURCE.Rate)
WHEN NOT MATCHED BY SOURCE
THEN DELETE
Что это заявление делает: когда подобрано: существуют данных в обеих таблицах, мы обновляем данные в разделе «Продукты», если ProductName или ставка отличается
КОГДА НЕ Немаловажны TARGET: существуют данных в промежуточной таблице, но не в вашем исходная таблица, добавить их к «Продукты»
КОГДА нЕ Немаловажна ИСТОЧНИК: существует данных в исходной таблице, но не в промежуточной таблице, да будет удален от «Продукты»
большое спасибо http://www.mssqltips.com/sqlservertip/1704/using-merge-in-sql-server-to-insert-update-and-delete-at-the-same-time/ за этот прекрасный пример!
Можете ли вы загрузить в промежуточную таблицу, а затем обновить изменения в БД? - извините, не на 100% уверены, где шея для бутылочки. строки для чтения Excel? вставляя в БД или проверяя, какие строки изменились (если так, где это делается - это между данными в клиентском приложении?) – gordatron
эти вопросы не нуждаются в ответе .. они просто объясняют мое предложение;) – gordatron
Обновлено строки с тех пор? – artm