Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để ngăn việc chèn dữ liệu trùng lặp vào bảng SQL Server?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa dữ liệu lớn của bảng trong SQL mà không có nhật ký?

  2. Làm cách nào để kết nối với cơ sở dữ liệu SQL Server trong CodeIgniter?

  3. chia cột ngày giờ thành năm, tháng và tuần

  4. Tôi có thể sử dụng Tư cách thành viên ASP.NET với SQL Server Compact Edition không?

  5. PowerShell - Liệt kê tất cả các phiên bản SQL trên hệ thống của tôi?