En primer lugar, puede evitar que se produzca un duplicado en la tabla mediante el uso de un índice o una restricción únicos. Un índice/restricción puede funcionar en concierto con las sugerencias a continuación. Si solo use un índice único y no una de las soluciones a continuación, insertar un registro duplicado arrojará un error y deberá manejar eso en el otro extremo.
Además, probablemente insertaría los datos a través de un procedimiento almacenado que verifica si la fila ya existe. Para hacer eso, puede usar un MERGE declaración, como se muestra en este pseudocódigo:
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,...
o bien, puede verificar la existencia de registros e insertar o actualizar manualmente:
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