Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa mencegah memasukkan data duplikat ke dalam tabel SQL Server?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian Teks Lengkap SQL Server 2008 (FTS) sangat lambat ketika lebih dari satu CONTAINSTABLE dalam kueri

  2. Versi dan Performa Baris

  3. Pertahankan waktu henti tabel seminimal mungkin dengan mengganti nama tabel lama, lalu mengisi versi baru?

  4. Cara Menghapus Catatan TIDAK DI

  5. Gunakan OBJECT_NAME() untuk Mendapatkan Nama Objek dari object_id-nya di SQL Server