Batasan unik diterapkan di belakang layar sebagai indeks unik, jadi tidak masalah bagaimana Anda menentukannya. Saya cenderung menerapkannya hanya sebagai:
ALTER TABLE dbo.foo ADD CONSTRAINT UQ_bar UNIQUE(bar);
Beberapa orang malah membuat indeks unik, mis.
CREATE UNIQUE INDEX IX_UQ_Bar ON dbo.foo(bar);
Perbedaannya terletak pada tujuannya - jika Anda membuat batasan untuk menegakkan keunikan/aturan bisnis, Anda membuat batasan, jika Anda melakukannya untuk membantu kinerja kueri, mungkin lebih logis untuk membuat indeks unik. Sekali lagi, ini adalah implementasi yang sama, tetapi jalan yang Anda ambil untuk mencapainya mungkin membantu mendokumentasikan niat Anda.
Saya pikir ada beberapa opsi untuk mematuhi fungsionalitas Sybase sebelumnya serta untuk mematuhi standar ANSI (meskipun kendala unik tidak mematuhi standar 100%, karena mereka hanya mengizinkan satu nilai NULL - indeks unik, pada di sisi lain, dapat mengatasi ini dengan menambahkan WHERE
klausa (WHERE col IS NOT NULL
) pada SQL Server 2008 dan yang lebih baru).