- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
論點
若使用 IDENTITY 等資料庫自動產生的方式給予識別碼
當資料列被刪除時,序號就會產生截斷
所以主索引鍵序號的值應從應用程式產生
例:
1 訂單#1
2 訂單#2
3 訂單#3
若今天刪除「訂單#3」然後再新增一筆訂單就會變成
1 訂單#1
2 訂單#2
4 訂單#4
應該是
1 訂單#1
2 訂單#2
3 訂單#4
答
這是一個很有趣的論點
上述情境中編號 3 的訂單不見是件「非常合理」的事情
大部分取得訂單會使用流水識別碼
若今天 3 被刪掉然後又新增一筆 3 出來
使用者就會發現:
今天我編號 3 的訂單怎麼跟之前不一樣了(因為顯示為訂單#4)
若使用應用程式來管理序號
就需要注意在水平擴充調整規模時會不會產生衝突
所以遞增序號應該由 SQL Server 負責提供
無論是使用「序列 (Sequence)」或是 IDENTITY 皆可
可以更加確保資料的一致性
留言
張貼留言