SQL Server 使用GUID當作PK範例

使用GUID需要將型別設定為uniqueidentifier。預設值通常會為NEWID(),即從資料庫生成時自動產生GUID帶入。

1.建立Table

1
2
3
4
5
CREATE TABLE Users (
[GUID] uniqueidentifier NOT NULL DEFAULT NEWID(),
[Name] NVARCHAR(50) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([GUID] ASC)
);

2.再來新增資料

1
2
3
4
5
6
7
INSERT INTO Users
(
[Name]
)
VALUES
('MC HOTDOG'),
('張震嶽')

3.查詢

1
SELECT * FROM Users

結果:

1
2
3
GUID	Name
FB5AFFC7-0802-47F7-AFB3-531BC83B6C26 張震嶽
F8122471-70AE-43C5-9C40-A65ED54FACD5 MC HOTDOG

總結

使用GUID優點:
1.不會讓資料庫造成依賴ex:產生唯一識別碼
2.不用擔心鍵值重複(機率極低)ex:不同時間產的多資料表合成一張資料表
3.不好被猜測ex:F8122471-70AE-43C5-9C40-A65ED54FACD5
缺點:
1.空間使用GUID 16Bytes比整數的4Bytes多。
2.效能(待釐清,似乎眾說紛紜)

參考資料