Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Ograniczenie tylko dla jednego rekordu oznaczonego jako domyślne

Użyj unikalnego filtrowanego indeksu

W SQL Server 2008 lub nowszym możesz po prostu użyć unikalnego filtrowanego indeksu

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

Gdzie jest stół

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

Na przykład, jeśli próbujesz wstawić wiele wierszy z tym samym FormID i isDefault ustaw na 1, pojawi się ten błąd:

Nie można wstawić zduplikowanego wiersza klucza w obiekcie „dbo.TableName” z unikalnym indeksem „IX_TableName_FormID_isDefault”. Zduplikowana wartość klucza to (1).

Źródło: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. LEFT() vs SET TEXTSIZE w SQL Server:jaka jest różnica?

  2. Wymuszanie przekroczenia limitu czasu zapytania w SQL Server

  3. Jak sprawdzić, które zamki trzymane są na stole

  4. Porównanie typów danych daty i godziny w SQL Server

  5. Naucz się przechowywać i analizować dokumenty w systemie plików Windows za pomocą wyszukiwania semantycznego SQL Server — część 1