sql >> Database teknologi >  >> RDS >> Sqlserver

betinget unik begrænsning

Se, det filtrerede indeks. Fra dokumentationen (min fremhævelse):

Et filtreret indeks er et optimeret ikke-klynget indeks, der er specielt velegnet til at dække forespørgsler, der vælger fra et veldefineret undersæt af data. Den bruger et filterprædikat til at indeksere en del af rækker i tabellen. Et veldesignet filtreret indeks kan forbedre forespørgselsydeevne samt reducere indeksvedligeholdelse og lageromkostninger sammenlignet med indekser i fuld tabel.

Og her er et eksempel, der kombinerer et unikt indeks med et filterprædikat:

create unique index MyIndex
on MyTable(ID)
where RecordStatus = 1;

Dette gennemtvinger i det væsentlige entydigheden af ​​ID når RecordStatus er 1 .

Efter oprettelsen af ​​det indeks vil en entydighedskrænkelse rejse en fejl:

Msg 2601, Level 14, State 1, Line 13
Kan ikke indsætte dublet nøglerække i objektet 'dbo.MyTable' med unikt indeks 'MyIndex'. Dubletnøgleværdien er (9999).

Bemærk:Det filtrerede indeks blev introduceret i SQL Server 2008. For tidligere versioner af SQL Server, se venligst dette svar.



  1. Sådan oprettes fremmednøglebegrænsning med ON DELETE SET NULL-indstillingen i SQL Server - SQL Server / TSQL Tutorial Del 81

  2. Hvad gør DELIMITER // i en trigger?

  3. Krypter data i SQLite

  4. 12 MySQL/MariaDB Sikkerhed bedste praksis for Linux