sql >> Databáze >  >> RDS >> Sqlserver

podmíněné jedinečné omezení

Hle, filtrovaný index. Z dokumentace (důraz):

Filtrovaný index je optimalizovaný neshlukovaný index, který je zvláště vhodný pro pokrytí dotazů, které vybírají z dobře definované podmnožiny dat. Používá predikát filtru k indexování části řádků v tabulce. Dobře navržený filtrovaný index může zlepšit výkon dotazů a také snížit náklady na údržbu indexu a úložiště ve srovnání s indexy s úplnou tabulkou.

A zde je příklad kombinace jedinečného indexu s predikátem filtru:

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

To v podstatě vynucuje jedinečnost ID když RecordStatus je 1 .

Po vytvoření tohoto indexu bude porušení jedinečnosti vyvoláno chybou:

Msg 2601, Level 14, State 1, Line 13
Nelze vložit duplicitní řádek klíče do objektu 'dbo.MyTable' s jedinečným indexem 'MyIndex'. Hodnota duplicitního klíče je (9999).

Poznámka:Filtrovaný index byl zaveden v SQL Server 2008. Starší verze SQL Serveru naleznete v této odpovědi.



  1. CIZÍ KLÍČ PŘI OMEZENÍ VYMAZÁNÍ Chyba – Oracle

  2. Cheat Sheet pro Access 2016 For Dummies

  3. Vnořené třídy - CustomRowMapper !! Už to není problém!! - Část 1

  4. Jak odstranit nové řádkové znaky z datových řádků v mysql?