Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

условно уникално ограничение

Ето, филтрираният индекс. От документацията (подчертавам моя):

Филтриран индекс е оптимизиран неклъстериран индекс, особено подходящ за покриване на заявки, които избират от добре дефиниран подмножество данни. Използва предикат на филтър, за да индексира част от редовете в таблицата. Добре проектираният филтриран индекс може да подобри производителността на заявката, както и да намали разходите за поддръжка и съхранение на индекса в сравнение с индексите с пълна таблица.

И ето пример за комбиниране на уникален индекс с предикат на филтър:

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

Това по същество налага уникалността на ID когато RecordStatus е 1 .

След създаването на този индекс, нарушение на уникалността ще предизвика грешка:

Съобщение 2601, ниво 14, състояние 1, ред 13
Не може да се вмъкне дублиран ключов ред в обект 'dbo.MyTable' с уникален индекс 'MyIndex'. Стойността на дублирания ключ е (9999).

Забележка:филтрираният индекс е въведен в SQL Server 2008. За по-ранни версии на SQL Server, моля, вижте този отговор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете централна заявка в sql сървър без агрегатна функция

  2. Изтрийте пощенските съобщения от базата данни от базата данни msdb в SQL Server (T-SQL)

  3. CHARINDEX() срещу PATINDEX() в SQL Server – Каква е разликата?

  4. Подобрете настройката на производителността на SQL Server с тези 3 съвета

  5. Най-добри отговори на 5 горящи въпроса относно функцията COALESCE в SQL Server