Во-первых, вы можете предотвратить появление дубликата в таблице, используя уникальный индекс или ограничение.Индекс / ограничение может работать совместно с предложениями ниже.Если вы только используете уникальный индекс, а не одно из приведенных ниже решений, при вставке дублирующейся записи возникнет ошибка, и вам придется устранить ее на другом конце.
Кроме того, явероятно вставит данные через хранимую процедуру, которая проверяет, существует ли строка.Для этого вы можете использовать оператор MERGE , как показано в этом псевдокоде:
create procedure MyProcedure
(
@Name nvarchar(100),
...
)
as
merge MyTable
using
(
select @Name,...
) as source (Name, ...)
on MyTable.Name = source.Name
when not matched then
insert (Name,...) values (source.Name,...)
when matched then
update set Name = @Name,...
, или вы можете проверить наличие записей и вставить или обновить вручную:
create procedure MyProcedure
(
@Name nvarchar(100),
...
)
as
if not exists (select * from MyTable where Name = @Name)
begin
insert into MyTable (Name,...) values (@Name,...)
end
else
begin
update MyTable
set ...
where Name = @Name
end