0
我們有一個表格,它在我們的應用程序數據庫中包含一些枚舉值和應用程序參數值。這些記錄使用標識列作爲其主鍵。我們也有DEV,TEST和PROD數據庫。每次發佈更新時,我們都需要在TEST和PROD數據庫之間同步主鍵。測試和產品之間的同步標識列
我想問的是,什麼是同步標識列的首選方法?我們想到的一個選擇是從主鍵列中移除標識屬性並手動創建在DEV和PROD上都相同的ID。
你的想法是什麼?
我們有一個表格,它在我們的應用程序數據庫中包含一些枚舉值和應用程序參數值。這些記錄使用標識列作爲其主鍵。我們也有DEV,TEST和PROD數據庫。每次發佈更新時,我們都需要在TEST和PROD數據庫之間同步主鍵。測試和產品之間的同步標識列
我想問的是,什麼是同步標識列的首選方法?我們想到的一個選擇是從主鍵列中移除標識屬性並手動創建在DEV和PROD上都相同的ID。
你的想法是什麼?
您需要有一個理由將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
在我的項目之一,我們發現,測試和督促數據庫套房最適合我們之間的每週刷新,因此考慮過調查這一變種。
優點:
缺點:
希望這有助於
聽起來好像HTTPS的一個問題://softwareengineering.stackexchange .COM。 –
@UweKeim引用其他網站時,通常會指出[交叉發帖被忽視](https://meta.stackexchange.com/tags/cross-posting/info) – gnat