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

Уникален ключ срещу уникален индекс на SQL Server 2008

Уникалното ограничение се внедрява зад кулисите като уникален индекс, така че всъщност няма значение как го определяте. Склонен съм да го прилагам просто като:

ALTER TABLE dbo.foo ADD CONSTRAINT UQ_bar UNIQUE(bar);

Някои хора вместо това създават уникален индекс, напр.

CREATE UNIQUE INDEX IX_UQ_Bar ON dbo.foo(bar);

Разликата е в намерението - ако създавате ограничението, за да наложите уникалност/бизнес правила, вие създавате ограничение, ако го правите, за да подпомогнете изпълнението на заявката, може да е по-логично да създадете уникален индекс. Отново, под завивките това е същото изпълнение, но пътят, който поемате, за да стигнете до там, може да ви помогне да документирате намерението си.

Мисля, че има множество опции за придържане както към предишната функционалност на Sybase, така и към стандарта ANSI (въпреки че уникалните ограничения не се придържат към стандарта 100%, тъй като позволяват само една NULL стойност - уникален индекс, на от друга страна, може да заобиколи това, като добави WHERE клауза (WHERE col IS NOT NULL ) на SQL Server 2008 и по-нова версия).



  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 Server?

  2. Прикачване на MDF файл без LDF файл

  3. ODBC неуспешно повикване със съхранена процедура - Преминаване през заявка

  4. SQL Server SHOWPLAN_TEXT

  5. Как да предотвратите едновременното изпълнение на задания на Sql сървър