2017-08-15 53 views
0

我們有一個表格,它在我們的應用程序數據庫中包含一些枚舉值和應用程序參數值。這些記錄使用標識列作爲其主鍵。我們也有DEV,TEST和PROD數據庫。每次發佈更新時,我們都需要在TEST和PROD數據庫之間同步主鍵。測試和產品之間的同步標識列

我想問的是,什麼是同步標識列的首選方法?我們想到的一個選擇是從主鍵列中移除標識屬性並手動創建在DEV和PROD上都相同的ID。

你的想法是什麼?

+0

聽起來好像HTTPS的一個問題://softwareengineering.stackexchange .COM。 –

+0

@UweKeim引用其他網站時,通常會指出[交叉發帖被忽視](https://meta.stackexchange.com/tags/cross-posting/info) – gnat

回答

0

您需要有一個理由將Identity屬性添加到PK。顯然Identity自動生成PK的方式,並允許你忘記代碼如MAX(id)+1。所以,如果它對你的情況沒有意義(據我所知你的值是預先定義的,代碼庫期望具體值),那麼刪除標識列應該是一個很好的解決方案。

此外,一個好的做法是在數據腳本中添加consitency檢查,並讓它們失敗或通知是否有任何衝突。隨着無標識的方式它看起來像:

IF EXISTS (SELECT 1 from enum_table where id = @idToInsert) 
    --notify there is a conflict 
    -- else insert @idToInsert 

在我的項目之一,我們發現,測試和督促數據庫套房最適合我們之間的每週刷新,因此考慮過調查這一變種。

優點:

  • 你將永遠有新鮮/一致的數據/模式複製督促問題
  • 無需移除查找表標識列(如果它是有道理的 - 像枚舉值可以出現不僅通過手動腳本)

缺點:

  • 可能不足以WH EN很多球隊正在對同一測試ENV,但是我覺得這取決於過程是如何組織好

希望這有助於