У меня есть классический случай ОБНОВЛЕНИЯ или ВСТАВКИ некоторых данных в таблицу. Я не уверен, должен ли я просто выполнить UPDATE, и если я получу нулевой ROWCOUNT, тогда сделайте INSERT. В качестве альтернативы, я слышал слухи о том, что заявление MERGE теперь заменяет это, но я не уверен, как и если это уместно, в этой ситуации.Является синтаксисом Sql2008 MERGE, что я должен делать, здесь?
Вот некоторые примеры SQL, чтобы помочь продемонстрировать это ...
ALTER PROCEDURE [dbo].[InsertLocationName]
(
@SomeId INTEGER,
@SomeName NVARCHAR(100)
)
AS
BEGIN
SET NOCOUNT ON
UPDATE TableFoo
SET SomeName = @SomeName
WHERE SomeId = @SomeId
-- Did we update something?
IF @@ROWCOUNT <= 0
-- Nope, so add the record.
INSERT INTO TableFoo
VALUES (@SomeName)
END
мысли?
Марк, может у редактировать свой ответ, используя мой пример SQL? –
@Marc, так что вы не можете иметь таблицу Target, а исходную таблицу - то же самое? –
nope - это не сработает. Вам нужно иметь фактическую таблицу, в которой есть все ваши данные, а затем вам нужна таблица с внесенными изменениями. –