使用SSMS資料庫管理工具修改PRIMARY KEY 1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計(或者展開鍵,選擇要修改的鍵,右鍵點擊,選擇修改,後面步驟相同)。 2、選擇要修改的數據列-》右鍵點擊-》選擇索引/鍵。 3、在索引/鍵彈出框中-》選擇要修改的主鍵-》類型選擇主鍵-》點擊列。 4 ...
使用SSMS資料庫管理工具修改PRIMARY KEY
1、連接資料庫,選擇數據表-》右鍵點擊-》選擇設計(或者展開鍵,選擇要修改的鍵,右鍵點擊,選擇修改,後面步驟相同)。
2、選擇要修改的數據列-》右鍵點擊-》選擇索引/鍵。
3、在索引/鍵彈出框中-》選擇要修改的主鍵-》類型選擇主鍵-》點擊列。
4、在索引列彈出框中-》選擇主鍵數據列-》選擇主鍵的排序規則-》點擊確定。
5、在索引/鍵彈出框中-》輸入要修改的主鍵名稱-》輸入要修改的主鍵描述-》表設計器規則可以使用系統預設-》點擊關閉。
6、點擊保存(或者ctrl+s)-》關閉表設計器-》刷新表-》查看修改結果。
使用T-SQL腳本修改PRIMARY KEY
若要使用 Transact-SQL 修改 PRIMARY KEY 約束,必須先刪除現有的 PRIMARY KEY 約束,然後再用新定義重新創建該約束。
語法:
--聲明使用資料庫
use 資料庫;
go
--如果已存在主鍵,則先刪除再添加,如果不存在在則不刪除
if exists(select * from sysobjects where name=主鍵名)
alter table 表名 drop constraint 主鍵名;
go
alter table 表名
add constraint 主鍵名
primary key
[nonclustered | clustered] ----在“表設計器”下的網格中,選擇“創建為群集索引”,再從下拉列表中選擇“是”創建群集索引,或選擇“否”創建非群集索引。 對於每個表,只允許存在一個聚集索引。 如果此表中已經存在聚集索引,則您必須首先對原始索引清除此設置。
(列名 [asc | desc],列名 [asc | desc])
--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(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='PK__test1__3213E83F466EE881')
alter table test1 drop constraint PK__test1__3213E83F466EE881;
go
alter table test1
add constraint PK__test1__3213E83F466EE881
primary key
nonclustered ----在“表設計器”下的網格中,選擇“創建為群集索引”,再從下拉列表中選擇“是”創建群集索引,或選擇“否”創建非群集索引。 對於每個表,只允許存在一個聚集索引。 如果此表中已經存在聚集索引,則您必須首先對原始索引清除此設置。
(id asc)
--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(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'PK__test1__3213E83F466EE881';
go
修改PRIMARY KEY主鍵優缺點
優點:
1、主鍵可以是任意數據類型。
2、整型主鍵簡單、效率高。
3、使用GUID作為主鍵安全,保證唯一性。
4、使用GUID作為主鍵不會產生自增欄位那樣數據合併時的問題。
缺點:
1、整型主鍵有數據條數的限制。
2、整型主鍵在資料庫進行數據合併時會比較麻煩。
3、整型之外的數據類型毫無規律,要在上面建立索引很耗時,所以效率要比使用自增欄位低。
4、整型之外的主鍵占用大量存儲空間。