Вам требуется вставить значение в таблицу либо обновить его (если ключ уже содержится в таблице) одним запросом?
Как это сделать просто в MS SQL?
Допустим, у нас есть таблица товаров, содержащая два поля: id товара и какой-то признак (mark) (изменения, выгрузки и проч.)
If OBJECT_ID('Products') IS NULL
CREATE TABLE [dbo].[Products](
[Id] [char](9) COLLATE Cyrillic_General_CI_AS NOT NULL,
[Mark] [tinyint] NOT NULL,
CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Необходимо, чтобы запрос добавлял запись о товаре, если ее нет, и обновлял бы пометку, если такая запись есть.
Например, нужно обновить товар с id = ' 1 ' и пометкой 0.
В MySQL это можно сделать с помощью такого запроса:
INSERT INTO Products VALUES (' 1 ', 0)
ON DUPLICATE KEY UPDATE Mark = 0
В MS SQL, чтобы не заморачиваться с MERGE, можно написать такой запрос:
UPDATE Products
SET Mark = 0
WHERE Id = ' 1 '
IF (@@ROWCOUNT = 0 )
INSERT INTO Products VALUES (' 1 ', 0)
Другие статьи по прямым запросам:
Ускоряем регистрацию объектов в МОД (для SQL)
Проверка дублей строк с помощью 1С++
Как использовать УРБД в отличающихся конфигурациях
Примеры решения нестандартных задач на T-SQL в 1С
Как написать прямой запрос в 1С (DBF, 1sqlite)
Запросы в 1С к двум базам одновременно (DBF, OLE DB)
Как написать прямой запрос в 1С (SQL) с помощью 1С++
Онлайн резервирование товаров на складе (online reservation)