Sql-Server

顯式生成唯一 ID 的標識列或 UDF?

  • February 18, 2019

我正在辯論是否更好地PRIMARY KEY使用Identity Columns,我們使用顯式生成唯一 ID 的 UDF。

  • 我正在為身份列爭論。

  • 他聲稱,我的伙伴正在爭論手動生成值

    • 通過將 UDF 放在另一個可以有 UDF 的表上

      • 鎖定資源
      • 增加一個 ID 表,其中一個欄位ID_Value1
      • 將此用作全域唯一標識符
    • 或者讓表格id+1在插入時執行

    • 在沒有辨識約束的伺服器和/或環境之間移動數據更簡單;從一個有數據的數據庫移動到另一個類似的數據庫,比如說暫存或虛擬數據。對於非生產環境中的測試,我們可能希望將昨天的所有記錄拉下來進行測試。

哪種實現更有意義?

你的同事是個白痴。

該解決方案將不可擴展,UDF 不是並發的(與此相同的原因)。以及如何處理多行插入:這需要每行呼叫一次 UDF

並且遷移到其他 RDBMS 在現實生活中並不經常發生……您現在最好不要使用 SQL Server,而在 Oracle 上使用序列,希望您不要遷移。

編輯:

您的更新聲明移動數據用於刷新非生產數據庫。

在這種情況下,刷新時會忽略標識列。你不會為了讓非產品載入更容易而犧牲你的實現。或者使用臨時表來跟踪標識值的變化。

或者使用流程:我們每天晚上從生產中更新我們的測試系統,這完全避免了這個問題。(並確保我們的產品備份也可以恢復)

引用自:https://dba.stackexchange.com/questions/1632