Trước tiên, bạn có thể ngăn không cho trùng lặp xuất hiện trong bảng bằng cách sử dụng chỉ mục hoặc ràng buộc duy nhất. Chỉ mục / ràng buộc có thể hoạt động trong buổi hòa nhạc với những gợi ý dưới đây. Nếu bạn chỉ sử dụng một chỉ mục duy nhất và không phải một trong các giải pháp dưới đây, việc chèn một bản ghi trùng lặp sẽ gây ra lỗi và bạn cần phải xử lý điều đó ở đầu bên kia.
Ngoài ra, tôi có thể sẽ chèn dữ liệu thông qua một thủ tục được lưu trữ để kiểm tra xem hàng đã tồn tại hay chưa. Để làm điều đó, bạn có thể sử dụng MERGE tuyên bố, như được hiển thị trong mã giả này:
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,...
hoặc, bạn có thể kiểm tra sự tồn tại của bản ghi và chèn hoặc cập nhật theo cách thủ công:
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