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

Batasan hanya untuk satu catatan yang ditandai sebagai default

Gunakan indeks terfilter yang unik

Pada SQL Server 2008 atau lebih tinggi, Anda cukup menggunakan indeks yang difilter unik

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault
    ON TableName(FormID)
    WHERE isDefault = 1

Dimana tabelnya

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)

Misalnya jika Anda mencoba menyisipkan banyak baris dengan FormID yang sama dan isDefault set ke 1 Anda akan mendapatkan kesalahan ini:

Tidak dapat menyisipkan baris kunci duplikat di objek 'dbo.TableName' dengan uniqueindex 'IX_TableName_FormID_isDefault'. Nilai kunci duplikat adalah (1).

Sumber:http://technet.microsoft.com/en-us/library/cc280372.aspx



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memasukkan banyak catatan dan mendapatkan nilai identitas?

  2. Cara T-SQL paling efisien untuk memasang varchar di sebelah kiri hingga panjang tertentu?

  3. SQL Server secara diam-diam memotong varchar dalam prosedur tersimpan

  4. Bagaimana cara menghapus aksen dan semua karakter <> a..z di sql-server?

  5. Cara Membatasi Baris dalam Kumpulan Hasil SQL Server