Уникалното ограничение се внедрява зад кулисите като уникален индекс, така че всъщност няма значение как го определяте. Склонен съм да го прилагам просто като:
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 и по-нова версия).