Tout d'abord, vous pouvez empêcher qu'un doublon ne se produise dans la table en utilisant un index unique ou une contrainte. Un index/contrainte peut fonctionner de concert avec les propositions ci-dessous. Si vous seulement utilisez un index unique et non l'une des solutions ci-dessous, l'insertion d'un enregistrement en double générera une erreur et vous devrez gérer cela à l'autre bout.
De plus, j'insérerais probablement les données via une procédure stockée qui vérifie si la ligne existe déjà. Pour ce faire, vous pouvez utiliser soit un MERGE déclaration, comme indiqué dans ce pseudo-code :
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,...
ou, vous pouvez vérifier l'existence des enregistrements et les insérer ou les mettre à jour manuellement :
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