我们有一个表,在我们的app数据库中包含一些枚举值和应用程序参数值。这些记录使用标识列作为主键。我们还有DEV,TEST和PROD数据库。每次发布更新时,我们都需要在TEST和PROD数据库之间同步主键。
我想问的是,同步标识列的首选方法是什么?我们想到的一个选项是从主键列中删除identity属性并手动创建在DEV和PROD上都相同的ID。
你有什么想法?
答案 0 :(得分:0)
您需要有理由向Identity
添加PK
属性。显然Identity
会自动生成PK的方式,并让您忘记MAX(id)+1
之类的代码。因此,如果它在您的情况下没有意义(据我所知,您的值是预定义的,代码库需要具体的值),那么删除标识列应该是一个很好的解决方案。
另一个好的做法是在数据脚本中添加联合检查,让它们失败或通知是否存在任何冲突。使用非身份方法,它看起来像:
IF EXISTS (SELECT 1 from enum_table where id = @idToInsert)
--notify there is a conflict
-- else insert @idToInsert
在我的一个项目中,我们发现测试和prod数据库套件之间的每周刷新最适合我们,因此请考虑调查此变体。
优点:
缺点:
希望这有帮助