iT邦幫忙

2023 iThome 鐵人賽

DAY 28
1

確定 table 現在的 pk 及 index

EXEC sp_pkeys 'my_table'

上面語法的執行結果如下:

TABLE_OWNER TABLE_NAME COLUMN_NAME TABLE_QUALIFIER KEY_SEQ PK_NAME
dbo my_table orderNumber db_name 1 constraintName
dbo my_table productID db_name 2 constraintName

此語法會顯示目前 pk 的欄位有哪些

若 table 一開始沒有 pk

ALTER TABLE my_table
ADD CONSTRAINT constraintName -- constrain 約束條件的名字可以自己設定
PRIMARY KEY (orderNumber, productID); -- 增加你要當作 pk 的欄位名,可以多組欄位當 pk

以上語法讓你建立 table pk 約束條件*

若 table 已經有 pk

不論你想

  1. 增加或刪除其中一個 pk 的欄位
  2. 更新 pk 欄位長度或型態
  3. 變更叢集索引

你都要先刪除原本的 pk constrain

ALTER TABLE my_table
DROP CONSTRAINT constraintName;

然後再執行上面的設定 pk 的流程

呼應前一篇 MSSQL index 整理,當你 table 設定 pk 後,可以執行以下檢查 table 索引

EXEC sp_helpindex 'my_table'

EXEC sp_helpindex 'my_table' 的結果

index_name index_description index_keys
constraintName clustered, unique, primary key located on PRIMARY orderNumber, productID

可以發現除了 pk,SQL Server 也同時幫你建立好叢集索引,且因為 pk 的特性,也建立 unique 索引


上一篇
SQL Server 的索引相關知識整理-重點整理、與 PK 關係?
下一篇
使用 bigquery GUI 或 bq load 匯入 CSV 檔案有什麼技巧? 每個參數的意思?
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言