使用SSMS資料庫管理工具修改UNIQUE約束 1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計(或者展開鍵,選擇要修改的鍵,右鍵點擊,選擇修改,後面步驟相同)。 2、選擇要修改的數據列-》右鍵點擊-》選擇索引/鍵。 3、在索引/鍵彈出框中-》選擇要修改的唯一約束-》選擇約束類型-》點擊列。 4、 ...
使用SSMS資料庫管理工具修改UNIQUE約束
1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計(或者展開鍵,選擇要修改的鍵,右鍵點擊,選擇修改,後面步驟相同)。
2、選擇要修改的數據列-》右鍵點擊-》選擇索引/鍵。
3、在索引/鍵彈出框中-》選擇要修改的唯一約束-》選擇約束類型-》點擊列。
4、在索引列彈出框中-》選擇要約束的數據列-》選擇要約束的數據列的排序規則-》點擊確定。
5、在索引/鍵彈出框中-》輸入要修改的唯一約束名稱-》輸入要修改的唯一約束描述-》表設計器規則可以使用系統預設-》點擊關閉。
6、點擊保存(或者ctrl+s)-》刷新表-》查看修改結果。
使用T-SQL腳本修改UNIQUE約束
若要使用 Transact-SQL 修改 UNIQUE 約束,必須首先刪除現有的 UNIQUE 約束,然後用新定義重新創建。
語法:
--修改唯一約束
--聲明資料庫引用
use 資料庫名;
go
--判斷是否唯一約束是否存在,如果存在則刪除,不存在則添加
if exists(select * from sysobjects where name=約束名)
alter table 資料庫名 drop constraint 約束名;
go
--添加唯一約束
alter table 表名
add constraint 約束名
unique
[nonclustered|clustered] --在“表設計器”下的網格中,選擇“創建為群集索引”,再從下拉列表中選擇“是”創建群集索引,或選擇“否”創建非群集索引。 對於每個表,只允許存在一個聚集索引。 如果此表中已經存在聚集索引,則您必須首先對原始索引清除此設置。
(列名 [asc|desc])
--fillfactor:填充因數適用於底層,指定一個百分比,指示資料庫引擎在索引創建或更改期間應該使每個索引頁的葉級別有多滿。指定的值必須是1到100之間的整數值。預設值為0。
--pad_index=on:FILLFACTOR指定的可用空間百分比將應用於索引的中間級頁面。
--pad_index=off or or fillfactor is not specified:在給定中間頁面上的一組鍵的情況下,中間級頁面被填充到接近容量,為索引可以具有的最大大小的至少一行留下足夠的空間。
--statistics_norecompute=on:過時的統計信息不會自動重新計算。
--statistics_norecompute=off:啟用自動統計信息更新。
--ignore_dup_key=on:打開,將重覆鍵值插入唯一索引時會出現警告消息。只有違反唯一性約束的行才會失敗。
--ignore_dup_key=off:關閉,將重覆鍵值插入唯一索引時會出現錯誤消息。回滾整個INSERT操作。
--allow_row_locks=on:訪問索引時允許行鎖。資料庫引擎確定何時使用行鎖。
--allow_row_locks=off:不使用行鎖。
--allow_page_locks=on:訪問索引時允許頁鎖。資料庫引擎確定何時使用頁鎖。
-- allow_page_locks=off:不使用頁鎖。
with(pad_index=off,fillfactor=1,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary];
go
--添加約束描述
execute sp_addextendedproperty N'MS_Description', N'約束描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'約束名';
go
示例:
--修改唯一約束
--聲明資料庫引用
use testss;
go
--判斷是否唯一約束是否存在,如果存在則刪除,不存在則添加
if exists(select * from sysobjects where name='unique1')
alter table test1 drop constraint unique1;
go
--添加唯一約束
alter table test1
add constraint unique1
unique
nonclustered --在“表設計器”下的網格中,選擇“創建為群集索引”,再從下拉列表中選擇“是”創建群集索引,或選擇“否”創建非群集索引。 對於每個表,只允許存在一個聚集索引。 如果此表中已經存在聚集索引,則您必須首先對原始索引清除此設置。
(name asc)
--fillfactor:填充因數適用於底層,指定一個百分比,指示資料庫引擎在索引創建或更改期間應該使每個索引頁的葉級別有多滿。指定的值必須是1到100之間的整數值。預設值為0。
--pad_index=on:FILLFACTOR指定的可用空間百分比將應用於索引的中間級頁面。
--pad_index=off or or fillfactor is not specified:在給定中間頁面上的一組鍵的情況下,中間級頁面被填充到接近容量,為索引可以具有的最大大小的至少一行留下足夠的空間。
--statistics_norecompute=on:過時的統計信息不會自動重新計算。
--statistics_norecompute=off:啟用自動統計信息更新。
--ignore_dup_key=on:打開,將重覆鍵值插入唯一索引時會出現警告消息。只有違反唯一性約束的行才會失敗。
--ignore_dup_key=off:關閉,將重覆鍵值插入唯一索引時會出現錯誤消息。回滾整個INSERT操作。
--allow_row_locks=on:訪問索引時允許行鎖。資料庫引擎確定何時使用行鎖。
--allow_row_locks=off:不使用行鎖。
--allow_page_locks=on:訪問索引時允許頁鎖。資料庫引擎確定何時使用頁鎖。
-- allow_page_locks=off:不使用頁鎖。
with(pad_index=off,fillfactor=1,statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary];
go
--添加約束描述
execute sp_addextendedproperty N'MS_Description', N'修改唯一約束', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'unique1';
go
UNIQUE約束修改優缺點
優點:
1、可以使用唯一約束擴大列數據約束範圍。
缺點:
1、如果列存在唯一約束,要列數據類型,可能會修改失敗。