вторник, 3 июня 2008 г.

Оптимизация SQL запроса update

Предположим, в программе стоит задача обновить запись в базе данных, если такая запись имеется и вставить запись, если такой записи еще нет. Конечно, можно сначала выполнить SQL запрос на проверку существования записи, потом выполнить запросы Insert или Update в зависимости от его результата. Но все эти операции можно совместить в одном SQL запросе следующим образом:
IF EXISTS(SELECT * FROM имя_таблицы WHERE Id = @id)
BEGIN
UPDATE имя_таблицы SET имя_поля1 = @newValue1, имя_поля2 = @newValue2, … WHERE Id = @id
END
ELSE
BEGIN
INSERT INTO Table1 (Id, имя_поля1, имя_поля2,…) VALUES (@id, @newValue1, @newValue2, …)
END

Комментариев нет: