MadMyche
Другим методом было бы использовать EXISTS
чтобы проверить, присутствует ли запись, а затем сделать вставку или обновление в зависимости от результатов.
IF EXISTS(SELECT 1 FROM MyTable WHERE RFID = @RFID) BEGIN
UPDATE MyTable SET [Name] = @NAME, [Type] = @TYPE WHERE RFID = @RFID
END; ELSE BEGIN
INSERT INTO MyTableTable ([Name], RFID, [Type]) VALUES (@NAME, @RFID, @TYPE)
END
Способ выбора того, какой из них использовать, будет зависеть от ваших бизнес-правил, использования и т. д.... И если это сводится к тому или иному, запустите оба запроса в SSMS и выберите
Показать Фактический План Выполнения чтобы увидеть, какой из них более эффективен
Примечание: Вы заметите, что оба вы
Имя и
Тип колонки заключены в квадратные скобки. Как правило, я бы избегал использовать их в качестве имен столбцов, поскольку они являются зарезервированными/защищенными/специальными словами. Я также избегал бы использования "специальных" имен из любого языка программирования, с которым вы работаете