之前一直沒有刻意去了解唯一約束和唯一索引的區別,只知道建了唯一約束之后自動會創建唯一索引,刪除唯一約束之后也會自動刪除對應的唯一索引。
今天工作中恰好碰到這個問題,把區別列舉如下:
1.創建腳本不一樣:
--創建唯一約束可以在建表時就指定:CREATE TABLE [dbo].[TABLE_NM]( [CODE] CHAR(4) NOT NULL, CONSTRAINT [UK_CODE] UNIQUE NONCLUSTERED ([CODE]),)--創建唯一約束也可以使用ALTER TABLE來增加:ALTER TABLE [dbo].[TABLE_NM] ADD CONSTRAINT [UK_CODE] UNIQUE NONCLUSTERED ( [CODE] ASC)--創建唯一索引腳本:CREATE UNIQUE NONCLUSTERED INDEX [UK_CODE] ON [dbo].[TABLE_NM]( [CODE] ASC)
2.創建后,在SSMS中能看到的區別:
3.其他區別
例如參與事務復制的表必須提前建立主鍵或者唯一約束,在這里,只有唯一索引就不行了。
新聞熱點
疑難解答