Ten eerste kunt u voorkomen dat er ooit een duplicaat in de tabel voorkomt door een unieke index of beperking te gebruiken. Een index/beperking kan in overleg werken met onderstaande suggesties. Als je alleen gebruik een unieke index en niet een van de onderstaande oplossingen, het invoegen van een duplicaat zal een fout veroorzaken en u zult dat aan de andere kant moeten afhandelen.
Bovendien zou ik de gegevens waarschijnlijk invoegen via een opgeslagen procedure die controleert of de rij al bestaat. Om dat te doen, kunt u een MERGE . gebruiken verklaring, zoals weergegeven in deze 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,...
of u kunt controleren of de records bestaan en handmatig invoegen of bijwerken:
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