Sql-Server
顯式生成唯一 ID 的標識列或 UDF?
我正在辯論是否更好地
PRIMARY KEY
使用Identity Columns,我們使用顯式生成唯一 ID 的 UDF。
我正在為身份列爭論。
他聲稱,我的伙伴正在爭論手動生成值
通過將 UDF 放在另一個可以有 UDF 的表上
- 鎖定資源
- 增加一個 ID 表,其中一個欄位
ID_Value
由1
- 將此用作全域唯一標識符
或者讓表格
id+1
在插入時執行在沒有辨識約束的伺服器和/或環境之間移動數據更簡單;從一個有數據的數據庫移動到另一個類似的數據庫,比如說暫存或虛擬數據。對於非生產環境中的測試,我們可能希望將昨天的所有記錄拉下來進行測試。
哪種實現更有意義?
你的同事是個白痴。
該解決方案將不可擴展,UDF 不是並發的(與此相同的原因)。以及如何處理多行插入:這需要每行呼叫一次 UDF
並且遷移到其他 RDBMS 在現實生活中並不經常發生……您現在最好不要使用 SQL Server,而在 Oracle 上使用序列,希望您不要遷移。
編輯:
您的更新聲明移動數據用於刷新非生產數據庫。
在這種情況下,刷新時會忽略標識列。你不會為了讓非產品載入更容易而犧牲你的實現。或者使用臨時表來跟踪標識值的變化。
或者使用流程:我們每天晚上從生產中更新我們的測試系統,這完全避免了這個問題。(並確保我們的產品備份也可以恢復)