Pertama, Anda dapat mencegah terjadinya duplikat dalam tabel dengan menggunakan indeks atau batasan unik. Sebuah indeks/batasan dapat bekerja bersama dengan saran di bawah ini. Jika Anda hanya gunakan indeks unik dan bukan salah satu dari solusi di bawah ini, memasukkan catatan duplikat akan menimbulkan kesalahan dan Anda harus menanganinya di ujung yang lain.
Selain itu, saya mungkin akan memasukkan data melalui prosedur tersimpan yang memeriksa untuk melihat apakah baris sudah ada. Untuk melakukannya, Anda dapat menggunakan MERGE pernyataan, seperti yang ditunjukkan dalam kode semu ini:
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,...
atau, Anda dapat memeriksa keberadaan catatan dan menyisipkan atau memperbarui secara manual:
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